-
Defining and running multi-container Docker applications
-
YAML file to configure your application’s services
-
Multiple isolated environments on a single host
-
Preserve volume data when containers are created
-
Only recreate containers that have changed
-
Variables and moving a composition between environments
-
Development environments
-
Automated testing environments
-
Single host deployments
-
Docker-Swarm deployments
Using Compose is basically a three-step process:
- Define your app’s environment with a
Dockerfile
- Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment. - Lastly, run
docker-compose up
and Compose will start and run your entire app.
docker-compose.yml
version: '3'
services:
web:
build: .
environment:
NODE_ENV: production
REDIS_HOST: 'redis'
REDIS_PORT: '6379'
ports:
- '8080:8080'
links:
- 'redis'
depends_on:
- 'redis'
redis:
image: redis:4.0.11
docker-compose.yml
version: '3'
services:
app:
networks:
- compose-nodejs-redis-app
deploy:
replicas: 2
image: compose-nodejs-redis:1.0.0
environment:
NODE_ENV: production
REDIS_HOST: 'redis'
REDIS_PORT: '6379'
depends_on:
- 'redis'
ports:
- '9090:80'
redis:
networks:
- compose-nodejs-redis-app
image: redis
networks:
compose-nodejs-redis-app:
external: true
docker-compose
With docker-compose
we can build all the images at once running
docker-compose build
docker-compose run web sh
Start docker-compose.yaml
as default
docker-compose up
Detached
docker-compose up -d
docker-compose logs
docker-compose logs web
docker-compose ps
docker-compose stop
docker-compose stop web
- Starts existing containers for a service, e.g.
web
:
docker-compose start web
docker-compose rm
The previous command removes stopped service containers.
docker-compose down