Docker 仅在前一个容器运行后启动容器

Docker 仅在前一个容器运行后启动容器,docker,kubernetes,Docker,Kubernetes,假设我有3个容器X、Y和Z。我希望容器Y仅在容器X运行后启动,容器Z仅在容器Y运行后启动 我如何做到这一点?< P>你应该考虑重新设计你的应用程序部分,如果它们有很重的依赖关系,那么它们可能不应该被拆分到不同的容器,或者你应该使用一些去耦来避免 您可以做的是: 再喝一杯 在每个容器中设置一个块,直到满足依赖关系为止 在集群之外实现一些控制启动哪些吊舱的功能 写一篇 您可以使用带有选项的文件来控制容器启动顺序 下面是您示例中的docker compose.yml的样子: version: '3'

假设我有3个容器X、Y和Z。我希望容器Y仅在容器X运行后启动,容器Z仅在容器Y运行后启动


我如何做到这一点?

< 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的新手,在询问任何问题之前,一个好的建议是查看一下指南。您好,您找到适合您的解决方案了吗?