Introduction to Docker Compose
Agenda
- What is Docker Compose?
- 3 Steps of Docker Compose
- Building Blocks of Docker Compose
- Docker Compose File Format
- Networking in Docker Compose
- Environmental Variable under Docker Compose
- Installing Docker Compose
- Examples – WordPress, HelloWhale etc.
- Hands-on Labs
Did you know?
There are 3,00,000 Docker Compose files in
GitHub today
Docker Compose: Multi Container Applications
4
Without Compose
• Build and run one container at a time
• Manually connect containers together
• Must be careful with dependencies and start
up order
With Compose
• Define multi container app in compose.yml file
• Single command to deploy entire app
• Handles container dependencies
• Works with Docker Swarm, Networking,
Volumes, Universal Control Plane
Docker Compose: WordPress Application
5
Without Compose With Compose
$docker run -e MYSQL_ROOT_PASSWORD=<pass> -e
MYSQL_DATABASE=wordpress --name wordpressdb -v
"$PWD/database":/var/lib/mysql -d mysql:latest
$docker run -e WORDPRESS_DB_PASSWORD=<pass> --name
wordpress --link wordpressdb:mysql -p 80:80 -v "$PWD/html":/var/www/html
-d wordpress
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_PASSWORD=<pass>
Compose works in all
environments: production,
staging, development,
testing, as well as CI
workflows.
A tool for defining and
running multi-
container Docker
applications
With Compose, you
use a YAML file to
configure your
application’s services.
With a single command,
you create and start all
the services from your
configuration
What is Docker Compose?
3 step process of Docker Compose
Docker Compose is a 3 Steps Process
Define your app’s
environment with a
Dockerfile
Define the services that
make up your app in
Docker Compose file
Run the CLI:
$ docker-compose up
Building Blocks of Docker Compose
Building Blocks of Docker Compose
B
A
C
Services Volumes Networking
containers:
web:
build: .
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/code
environment:
- PYTHONUNBUFFERED=1
redis:
image: redis:latest
command: redis-server --appendonly yes
Docker Compose: Multi Container Applications
A Sample Docker Compose File
Docker Compose Compatibility
Matrix
Docker
Compose
File Format
Compatibility
Matrix
Environmental Variable in
Docker Compose
Environmental Variable
in Docker Compose:
Using .env file
Environmental Variable
in Docker Compose:
Using `docker-compose
run` command
Networking in Compose
Networking in Compose
- A network called myapp_default is created.
- A container is created using web’s configuration.
It joins the network myapp_default under the
name web.
- A container is created using db’s configuration. It
joins the network myapp_default under the
name db.
Compose for Swarm
Mode
- The same Compose file can be used to deploy
containerized apps on multi-host system
- The overlay driver creates a named network
across multiple nodes in a swarm.
- The “global mode” enable atleast one copy of
apps running on every node of the swarm
How to install Docker Compose?
How to Install Docker Compose
$ curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-
`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
Note: Docker Desktop will automatically install the latest version of Docker
Engine for you.
A Sample WordPress Compose File
Labs
Playground:
https://play-with-docker.com
https://dockerlabs.collabnix.com/intermediate/workshop
Labs:
Docker Compose Labs
https://github.com/docker/compose/
Thank You!

Introduction to Docker Compose