Docker 仅在前一个容器运行后启动容器
假设我有3个容器X、Y和Z。我希望容器Y仅在容器X运行后启动,容器Z仅在容器Y运行后启动Docker 仅在前一个容器运行后启动容器,docker,kubernetes,Docker,Kubernetes,假设我有3个容器X、Y和Z。我希望容器Y仅在容器X运行后启动,容器Z仅在容器Y运行后启动 我如何做到这一点?< P>你应该考虑重新设计你的应用程序部分,如果它们有很重的依赖关系,那么它们可能不应该被拆分到不同的容器,或者你应该使用一些去耦来避免 您可以做的是: 再喝一杯 在每个容器中设置一个块,直到满足依赖关系为止 在集群之外实现一些控制启动哪些吊舱的功能 写一篇 您可以使用带有选项的文件来控制容器启动顺序 下面是您示例中的docker compose.yml的样子: version: '3'
我如何做到这一点?
< P>你应该考虑重新设计你的应用程序部分,如果它们有很重的依赖关系,那么它们可能不应该被拆分到不同的容器,或者你应该使用一些去耦来避免 您可以做的是:docker compose.yml
的样子:
version: '3'
services:
X:
image: X_image
Y:
image: Y_image
depends_on: X
Z:
image: Z_image
depends_on: Y
注意:取决于
不会在启动Y之前等待X“准备就绪”-只在它运行之前。如果需要等待服务准备就绪,请参阅以获取有关此问题的更多信息和解决策略
好建议。一个带有睡眠的入口点脚本是一个可行的解决方案。理想情况下,容器Z中的应用程序将尝试以合理的间隔重新连接到容器Y,直到找到它为止。这将使整个基础架构更加健壮。由于您似乎是StackOverflow的新手,在询问任何问题之前,一个好的建议是查看一下指南。您好,您找到适合您的解决方案了吗?