Other composition tools
We have already seen how we can compose and build a multiple service application using docker-compose and .sh scripts. But there are some other options that you may want to consider.
Docker Swarm
Docker Swarm is a cluster management system. It allows you to deploy containers that are defined with docker-compose to a cluster of nodes or servers. There are some limitations to what you can do with docker-compose.yml if you want to use Docker Swarm. For example, you cannot use volumes with Docker Swarm, and binding container ports to the host should be carefully planned.
Kubernetes
Kubernetes is a feature-rich alternative to docker-compose. It allows containers to be deployed to a cluster of Docker container servers and uses a configuration file format similar to docker-compose.yml.
Packer
Packer is a tool that generates several output formats, including Docker containers. You define your containers using JSON files and the tool reads from them. Packer uses builders to generate output files. The output can be (but is not limited to) the following:
- Azure machine images
- DigitalOcean machine images
- Docker container images
- Google cloud images
- Parallels (for macOS) images
- VirtualBox images
- VMware images
The composition tool that you choose should make your job easier. Be sure to choose one that truly suits your needs. Docker Compose is the official Docker composition tool. The others may be more modern and solve additional problems that Docker Compose does not.