I want to Distribute my software as an ISO build from a VM system based on ubuntu server

I have developed a web application that should be deployed on-premises. The application includes several services running inside Docker Compose, a Django server running on the host machine, MongoDB, systemd services, a syslog server, and a frontend based on Angular hosted through Nginx at /var/www/html.

I need to create a live ISO image of my entire system, making it bootable. The challenge is that I have data stored in MongoDB and Docker volumes (including data for Elasticsearch, etc.), and I want to ensure all of this is included in the ISO image so that it can be booted and the system can function as it does currently.

How can I generate a bootable ISO image that includes the entire system setup (including Docker containers and volumes, MongoDB data, and system services) so that it can be deployed on other machines?

I initially tried using Cubic to create a bootable live ISO of my entire system, but I found that Cubic is mainly designed for customizing a base Ubuntu ISO rather than capturing an existing system as it is. It allows modifications, but it does not preserve installed services, data, or configurations exactly as needed.

I also attempted to use Bulifs, but I couldn’t achieve the desired results with it either. My expectation was to generate a bootable ISO that would, when installed, replicate my entire configured environment, including all services running on the host, Docker containers with their volumes, systemd services, and MongoDB data. While I was using bulifs it generated the ISO of the machine but when I booted the ISO it was asking for the user password but it was not expecting my user password from the source system.

In one of my attempts, I tried modifying a Cubic-generated ISO by manually configuring the system inside it. However, this led to multiple installation errors, and the ISO would break, failing to install properly. The installation process encountered unexpected issues, possibly because the modifications were not being applied correctly or certain dependencies were missing.

I am currently using Ubuntu Server 24 and looking for a proper method to create a full system ISO that captures everything, including data from MongoDB, Docker volumes, and services like Elasticsearch.

Are you familiar with or have you tried using xorriso or mkisofs as described at the links below? As described in the first link, using mkisofs would be run from another installed Linux or from a ‘live’ Linux usb where you would need to create a directory as a mount point for the partition you want to use. The second link also describes mkisofs but the bottom of the pages discusses xorriso. Have you tried clonezilla?

https://www.wikihow.com/Create-an-ISO-File-in-Linux

https://unix.stackexchange.com/questions/90793/create-iso-image-from-folder-via-terminal-commands

Let me try and get back to you, I saw some documentation and tutorials and I noticed that these only make ISO of some particular directories but not the whole system.

Perhaps Linux Live Kit is also something to consider?

From the same developer who maintains Slax.

Perhaps qt-fsarchiver is another option?

I believe you can also clone a drive using it.

But, you would then likely need to figure out how to make a bootable ISO.

Caveat: I have not tried either of these methods, just trying to offer some suggestions to look at.

I tried using xorisso level 3 of ISO but there was some bootloader configuration issue in GRUB. The ISO wasn’t able to find any bootloader configurations so I am trying again now with some fixes hope that works… :slightly_smiling_face: