Docker 学习笔记(七)docker compose
目录
警告
本文最后更新于 2022-08-14,文中内容可能已过时。
1. 简介
- docker-compose: 定义和运行多个 Docker 容器的应用
- compose v2: Docker 官方用 GO 语言 重写 了 Docker Compose,并将其作为了 docker cli 的子命令,称为 Compose V2。
docker-compose命令替换为docker compose,即可使用 Compose v2
2. compose 文件结构和命令
基本语法结构:
| |
命令:
- 创建并启动:
docker compose [-f composefile.yml] up [-d] [--build] - 停止并删除:
docker compose [-f composefile.yml] down - 启动、停止:
docker compose [-f composefile.yml] {start|stop} - 重启:
docker compose [-f composefile.yml] restart - build or rebuild:
docker compose [-f composefile.yml] build
3. compose 网络
- 不指定网络,会创建一个默认网络
- 创建网络不指定 driver 为默认 bridge
4. compose 水平扩展
- 配置 compose file
| |
- 或者 up 时指定 scale,会覆盖 compose file 中的配置:
docker compose up -d --scale frontend=3 - 还会做简单的负载均衡,使用 service name 访问时,dns 会解析到不同的 replicas 中
5. compose 环境变量
- 在 compose 文件中使用
${VAR_NAME}代表从外部读取变量值填入 compose 文件 - 传入变量的方式:创建
.env文件,在文件中赋值会自动传入 - 验证 compose 文件:
docker compose config - 指定 env 文件名:
docker compose --env-file <filename> ...
6. 服务依赖和健康检查
depends_on指定依赖,被依赖的服务启动后,才会启动该服务- 只依赖启动顺序不靠谱,可能被依赖的服务启动了但是发生错误了,因此需要健康检查
Dockerfile也可以定义健康检查:HEALTHCHECK指令,根据--interval间隔不断检查,docker container ls可以在STATUS字段看到 health 状态(starting、healthy, unhealthy)- 在 compose 文件中定义 health check:
| |
- 只有 depends_on 是 [healthy|started] 才启动:
| |