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.