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!