1、YAML配置文件
Docker Compose 使用 YAML 文件来定义多服务的应用。YAML 是 JSON 的一个子集,因此也可以使用
JSON。
Docker Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。
Docker Compose 的 YAML 文件包含 4 个一级 key:version、services、networks、volumes
2、Docker-Compose 4个一级 key
version 是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是
API)的版本。注意,version 并非定义 Docker Compose 或 Docker 引擎的版本号。
services 用于定义不同的应用服务。上边的例子定义了两个服务:一个名为 lagou-mysql数据库服
务以及一个名为lagou-eureka的微服。Docker Compose 会将每个服务部署在各自的容器中。
networks 用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络。
这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用 driver 属性来指定不
同的网络类型。
volumes 用于指引 Docker 来创建新的卷。
3、docker-compose文件结构和示例
version: "3"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: example/exampleapp:before
ports:
- 5000:80
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: example/exampleapp:before
ports:
- 5001:80
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: example/exampleapp
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: example/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
4、常用命令
启动服务
docker-compose up -d
停止服务
docker-compose down
列出所有运行容器
docker-compose ps
查看服务日志
docker-compose logs
构建或者重新构建服务
docker-compose build
启动服务
docker-compose start
停止已运行的服务
docker-compose stop
重启服务
docker-compose restart