控制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
属性,例如:上面例子中的
db
redis
会先于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
依赖容器启动成功并退出后再启动容器
参考: