How to bundle a multi-service Docker Compose application into a single archive file?

I’ve got a Docker Compose application that works great on my local machine. It has two main components:

  • A backend service using Django (Python)
  • A frontend service using Vue.js

My docker-compose.yml builds and runs both services without any issues locally.

What I want to do now is create a single archive file that contains my entire Docker Compose setup. This way I can transfer it to a different server and deploy everything there.

I need to include these items in the archive:

  • The docker-compose.yml configuration file
  • Docker build files for both services
  • All source code for backend and frontend services
  • Ideally, the pre-built Docker images to avoid rebuilding on the target machine

Can this be accomplished? What would be the recommended approach to create such a package and then deploy it on a different system?

nice setup! have you tried using docker save to export your images as tar files? you can bundle it all together with your compose file and source code. are you automating this deployment or is it just a one-time transfer?

To bundle your Docker Compose application, start by building your images using docker-compose build. After this, export the images with docker save -o backend.tar your-backend-image and docker save -o frontend.tar your-frontend-image. Organize your docker-compose.yml, source code, and the TAR files into one directory. Then, create a deployment script that utilizes docker load -i backend.tar and docker load -i frontend.tar, followed by docker-compose up -d. Finally, compress everything into a tar.gz file. When deploying, just extract the archive and execute the script to avoid rebuilding while maintaining the same setup.