Docker Compose 文件 v2 和 v3 版本的区别
版本声明
在 Docker Compose 文件的开头,您需要声明正在使用的 Compose 版本。v2 版本的声明如下:
version: '2'
而 v3 版本的声明如下:
version: '3'
服务定义
在 v2 版本中,服务定义使用 services
关键字,而在 v3 版本中,该关键字保持不变。以下是两个版本的服务定义示例:
v2 版本:
version: '2'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
v3 版本:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
网络定义
在 v2 版本中,网络定义使用 networks
关键字,而在 v3 版本中,该关键字保持不变。以下是两个版本的网络定义示例:
v2 版本:
version: '2'
networks:
app_net:
driver: bridge
services:
web:
...
networks:
- app_net
db:
...
networks:
- app_net
v3 版本:
version: '3'
networks:
app_net:
driver: bridge
services:
web:
...
networks:
- app_net
db:
...
networks:
- app_net
卷定义
在 v2 版本中,卷定义使用 volumes
关键字,而在 v3 版本中,该关键字保持不变。以下是两个版本的卷定义示例:
v2 版本:
version: '2'
volumes:
db_data:
services:
db:
image: postgres:latest
volumes:
- db_data:/var/lib/postgresql/data
v3 版本:
version: '3'
volumes:
db_data:
services:
db:
image: postgres:latest
volumes:
- db_data:/var/lib/postgresql/data
依赖关系和健康检查
在 v2 版本中,可以使用 depends_on
关键字定义服务之间的依赖关系,以及使用 healthcheck
关键字定义健康检查。在 v3 版本中,这些关键字保持不变。以下是两个版本的依赖关系和健康检查示例:
v2 版本:
version: '2'
services:
web:
build: ./web
ports:
- "80:80"
depends_on:
- db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
db:
image: postgres:latest
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
v3 版本:
version: '3'
services:
web:
build: ./web
ports:
- "80:80"
depends_on:
- db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
db:
image: postgres:latest
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
Docker Compose 文件 v2 和 v3 版本的特性
v2 版本特性
- 支持
depends_on
关键字定义服务之间的依赖关系。 - 支持
healthcheck
关键字定义健康检查。 - 支持
constraints
关键字定义服务部署约束。 - 支持
secrets
关键字定义加密数据。 - 支持
configs
关键字定义配置文件。 - 支持
scale
关键字定义服务副本数量。 - 支持
deploy
关键字定义服务的部署方式。
v3 版本特性
- 与 v2 版本相比,v3 版本提供了更好的性能和稳定性。
- 支持新的服务控制指令,如
up
,down
,start
,stop
,restart
,kill
,ps
,logs
,pause
,unpause
,rm
等。 - 支持新的服务编排功能,如
profiles
和stack
。 - 支持新的网络和卷插件。
- 支持新的环境变量处理方式。
- 支持新的健康检查语法。
- 支持新的服务更新策略。
- 支持新的服务扩展策略。
- 支持新的服务监控和日志记录功能。
- 支持新的服务安全特性,如
secrets
和configs
。