结论:
一般的都是使用 depends_on 来指定启动顺序,而且存在依赖服务容器不会等待ready状态问题。
但是 在swarm 模式下,depends_on是无效的,可以采用wait-for-it.sh 脚本拖延启动,如果还有其他方法,欢迎补充。
下面是官方资料,地址
depends_on
表达服务之间的依赖性。服务依赖项导致以下行为:
docker-compose up以依赖性顺序启动服务。在以下示例中,db和redis在之前启动web。docker-compose up SERVICE自动包含SERVICE的依赖项。在下面的示例中,docker-compose up web还将创建并启动db和redis。docker-compose stop按依赖关系顺序停止服务。在以下示例中,web在db和之前停止redis。
简单的例子:
version: "3.9" services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
使用时需要注意以下几点
depends_on:
depends_on 不会在启动 web之前等待db和redis变成“ready” 状态。如果您需要等待服务准备就绪,请参阅控制启动顺序以 获取有关此问题的更多信息以及解决该问题的策略。- deploying a stack in swarm模式下,3版本的Compose文件中 含有
depends_on,会忽略该选项 。
