➜ ~ docker-compose --version
docker-compose version 1.25.4, build 8d51620a
➜ ~ docker --version
Docker version 19.03.8, build afacb8b
➜ ~ docker-compose -f docker-compose-postgres.yml up
First glance
- 包含service (一个service可以跑相同image的多个replica)
- 可以定义多个containers, networks和volumes
- 使用template, variables
v2 vs v3
- v2 focus: single-node dev/test
- v3 focus: multi-node orchestration
- If not using Swarm/K8s, stick to v2
docker-compose.yml (默认文件名)
node.js
version: '2.0'
services:
web:
image: sample-01
build .
ports:
- "3000:3000"
mysql
version: '3'
services:
mysqldb:
image: mysql:5.7
container_name: mysqldb
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: catalog
docker-compose up
- build/pull images(s) if missing
- create volume/network/container(s)
- starts container(s) in foreground (-d to detach)
--build to always build
docker-compose down
- stop and delete network/container(s)
- use
-v to delete volumes
docker-compose build/stop
- many commands take "service" option
- build: just build/rebuild image(s)
docker-componse build --no-cache 重新执行Dockerfile中的每一行命令
- stop: just stop containers don't delete
- ps: list "services"
- push: images to registry
- logs: same as docker CLI
- exec: same as docker CLI
First glance
v2 vs v3
docker-compose.yml (默认文件名)
node.js
mysql
docker-compose up
--buildto always builddocker-compose down
-vto delete volumesdocker-compose build/stop
docker-componse build --no-cache重新执行Dockerfile中的每一行命令