I need to put together the steps and requirements for deploying a containerized Ruby On Rails application (w/MySQL DB) to an air-gapped (no network connection) machine that only has the ability to deploy via CD/DVD media (no USB access permitted).
All of this preparation is from our development environment (Mac) and we can assume the deployment machine is a 64bit Windows 10 Pro machine for now. Also the myapp image is based on Ubuntu 16.04.
Docker Images
Once the image has been built successfully on my Mac machine I assume the steps will be to:
docker save --output /path/to/CDMedia/myapp.tar myapp:latest
docker save --output /path/to/CDMedia/mysql.tar mysql:5.5.53
cp /path/to/myapp/docker-compose.yml
/path/to/CDMedia/docker-compose.yml`
And then when installing/updating the image on the Windows machine will be something like:
docker import D:\myapp.tar
docker import D:\mysql.tar
(initial install only)
cp D:\docker-compose.yml C:\path\to\myapp\docker-compose.yml
cd C:\path\to\myapp\
docker-compose stop myapp
(update only)
docker-compose rm myapp
(update only)
docker-compose up -d
Docker For Windows
I assume I must download and save the Docker For Windows installer InstallDocker.msi to the CD media (/path/to/CDMedia/
) but are there dependencies that may be required when installing it that it reaches out to the internet to get if needed during the installation process? Or is 100% of all possible requirements and dependencies not already part of Windows contained in the .msi file?
Reading through What to know before you install I see that each Hyper-V and Virtualization must be enabled and that the installer can enable these but requires a reboot.
I haven’t yet started looking at the Docker For Windows interface/options but is everything command line only like it is on Mac/Linux or is there a GUI that would be able to handle the importing, stopping, removing, starting? I ask because the end deployment will likely be by a less-than-savvy for command line tasks person and any assistance a GUI or automated steps to make this process easier would be great.
Does Docker For Windows restart automatically on reboot and if containers are running with restart: always
should the expectation be that everything will come back up online just as a standard windows service might?
Is there something I am missing or any gotchas or details worth noting for this strategy?