depends_on的文档状态:
使用
depends_on
时需要注意以下几点:
depends_on
在启动web
之前不等待db
和redis
"准备好"-只在它们启动之前。如果你需要等待要使服务准备就绪,请参见控制启动顺序了解更多信息这个问题和解决它的策略。
depends_on
选项在使用3版本的Compose文件以swarm模式部署堆栈时被忽略。
所以,这是否意味着当我使用集群模式和版本3撰写文件部署时,它将忽略depends_on下的所有条件?例如:
version: "3"
services:
web:
build: .
ports:
- "80:8000"
depends_on:
- "db"
command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
db:
image: postgres
非常正确,swarm
作为业务流程将忽略depends_on
。
为你的场景,但depends_on
真的没有必要为你已经比depends_on
wait-for-it.sh
具有更好地控制保证开始秩序。
您可以使用depends_on选项控制服务启动和关闭的顺序。Compose总是按照依赖顺序启动和停止容器,其中的依赖由depends_on、links、volumes_from和network_mode决定:"service:…"
然而,在启动时,Compose不会等到容器"准备好"(不管这对你的特定应用程序意味着什么)——只会等到它运行。这是有原因的。
第一个解决方案存在局限性。例如,它不会验证特定的服务何时真正准备好。
或者,编写您自己的包装器脚本来执行更特定于应用程序的运行状况检查。例如,您可能希望等待,直到Postgres准备好接受命令
详细信息请参见在撰写中控制启动和关闭顺序,因此您的解决方案中不需要depends_on
。