控制Docker Compose中的容器启动顺序
date
Jun 2, 2023
slug
控制Docker-Compose中的容器启动顺序
status
Published
tags
Docker
summary
type
Post
在docker-compose.yml中配置了多个service,在
docker-compose up后各个容器的启动并无依赖关系,如果需要控制容器的启动顺序需要使用到
depends_no 属性,例如:上面例子中的
dbredis会先于web启动,当docker-compose down 的时候,web会先于db, redis删除。depends_on只保证db, redis先于web启动,但有可能出现web先于db启动完成而无法连接数据库的情况,这种情况需用使用condition属性进行探活,看下面例子:通过对PostgresSQL进行5次探活,每次10s,探活成功后启动
web,否则放弃。condition有3个选项:
service_started这个和没有condition的效果一样
service_healthy依赖容器探活成功后再启动容器
service_completed_successfully依赖容器启动成功并退出后再启动容器
参考: