首页 > 解决方案 > docker-compose 等待另一个节点上的服务启动

问题描述

我有 2 个节点,每个节点都通过 docker-compose 文件运行不同的服务。节点 1 运行一个名为“rabbitmq”的服务。节点 2 有我的应用程序,它“依赖于”rabbitmq。我正在使用一个似乎适用于其他事物的群体/覆盖网络。我似乎无法将节点 2 上的“depends_on”用于rabbitmq(或者我使用错误......这很可能)。我收到一个错误,即找不到 rabbitmq。例如

节点 1 docker-compose 文件:

version: '3.4'
services:
   rabbitmq:
      image: someimage/rabbitmq
      container_name: rabbitmq
      ports:
         - 15672:15672
      hostname: rabbitmq
      healthcheck:
         test: ["CMD", "curl" "-f", "http://localhost:15672"]
         interval: 10s
         timeout: 5s
         retries: 5
      networks:
         - my-net
networks:
   my-net:
      driver: overlay
      attachable: true

NODE2 docker-compose 文件:

version: '3.4'
services:
   myapp:
      image: myapp
      container_name: myapp
      hostname: myapp
      depends_on: 
         rabbitmq:
           condition: healthy
      networks: 
         - my-net
      

networks:
   my-net:
      driver: overlay
      external: true

当我在 node2 的 docker-compose 文件上运行 docker-compose “up”时,我收到一个错误,即服务 rabbitmq 未定义。

我有更多的服务在两个节点上运行,所以这只是一个例子。基于我需要该网络的其他服务,我确信覆盖网络是可以的。

我想念的东西一定很简单。至少我希望如此。但我的谷歌搜索没有帮助。

谢谢比尔

标签: dockerdocker-compose

解决方案


推荐阅读