Docker Compose Cheatsheet: Simplify Your Docker Workflow
If you’re working with Docker and managing containerized applications, you’ve probably come across Docker Compose. Docker Compose is a powerful tool that allows you to define and manage multi-container applications. It simplifies the process of running and controlling sets of Docker containers.

With Docker Compose, you can describe your application’s services, networks, and volumes in a single YAML file. This makes it easy to spin up and tear down complex environments with just a few commands.
Installation
To get started with Docker Compose, you’ll first need to install it. Docker Compose is included in the Docker Desktop installation for Windows and macOS. For Linux users, Docker Compose can be installed separately using pip:
$ pip install docker-compose
Basic Commands
Here are some of the most commonly used Docker Compose commands:
docker-compose up: Start or recreate containersdocker-compose down: Stop and remove containers, networks, and volumesdocker-compose stop: Stop containers without removing themdocker-compose start: Start containers
These commands allow you to control the lifecycle of your containers easily.
Compose File
The Compose file is where you define your application’s services, networks, and volumes. It has a declarative syntax and is written in YAML format. Here’s an example of a simple Compose file:
version: '3'
services:
web:
image: nginx
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
networks:
default:
volumes:
data:
In this example, we have two services, web and db, running an NGINX web server and a MySQL database, respectively. The services are connected to the default network and use a shared volume called data.
Environment Variables
Docker Compose allows you to set environment variables for your services. This is useful for passing configuration values to your containers. You can define environment variables in the Compose file or in an external .env file. Here’s an example of setting environment variables in the Compose file:
version: '3'
services:
web:
image: nginx
environment:
- NGINX_PORT=8080
- API_KEY=123456
Scaling Services
With Docker Compose, you can easily scale your services to meet demand. Scaling is done using the docker-compose up command with the --scale flag. Here’s an example of scaling the web service to three replicas:
$ docker-compose up --scale web=3
Networking
Docker Compose creates a default network for your services, allowing them to communicate with each other. You can also define custom networks for more advanced networking setups. Here’s an example of defining a custom network in the Compose file:
version: '3'
services:
web:
image: nginx
networks:
- frontend
db:
image: mysql
networks:
- backend
networks:
frontend:
backend:
In this example, the web service is connected to the frontend network, while the db service is connected to the backend network.
Volumes
Docker Compose allows you to define volumes for persisting data. Volumes can be shared between services or bound to a specific host directory. Here’s an example of defining a volume in the Compose file:
version: '3'
services:
db:
image: mysql
volumes:
- data:/var/lib/mysql
volumes:
data:
In this example, the db service uses a volume called data to store its data in the /var/lib/mysql directory.
Conclusion
Docker Compose is a powerful tool that can greatly simplify your Docker workflow. It allows you to define and manage multi-container applications with ease. With the help of this cheatsheet, you can quickly reference the key commands and configurations needed to work effectively with Docker Compose.
Remember to refer to the official Docker documentation for more detailed information and advanced usage. Happy containerizing!

