如何使用 docker-compose 在 docker 容器之间建立依赖关系 [重复]

Posted

技术标签:

【中文标题】如何使用 docker-compose 在 docker 容器之间建立依赖关系 [重复]【英文标题】:How to establish dependency between docker containers using dcoker-compose [duplicate] 【发布时间】:2022-01-18 14:25:27 【问题描述】:

我正在尝试使用 docker-compose 运行 mongodb 和 Mongo-express 容器。 Mongo db 可能需要一些时间才能启动(启动并运行)。所以 Mondo-express 容器只能在 Mondb 容器启动并运行后运行。

即使我在 mongo-exp 中使用了“depends_on”标签,在某些情况下 mongo-exp 容器构建仍然会失败。如果我尝试重新创建 mongo-exp 容器,它将起作用。

请找到 docker-compose.yaml

version : "3"
services:
  mongodb:
    container_name: mongodb
    image: mongo
    ports:
    - "27017:27017"
    volumes:
      - "/home/opsmgr/devops/docker_mount:/data/db"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=***
      - MONGO_INITDB_ROOT_PASSWORD=***
    networks:
      - dbpvt
  mongo-exp:
     image: mongo-express
     container_name: mongo-exp
     ports:
      - "8081:8081"
     environment:
       - ME_CONFIG_MONGODB_ADMINUSERNAME=**
       - ME_CONFIG_MONGODB_ADMINPASSWORD=**
       - ME_CONFIG_MONGODB_SERVER=mongodb
       - ME_CONFIG_BASICAUTH_USERNAME=**
       - ME_CONFIG_BASICAUTH_PASSWORD=**
     networks:
       - dbpvt
     depends_on:
      - mongodb
networks:
 dbpvt:**

【问题讨论】:

【参考方案1】:

您可以添加重启策略,以防无法自动重启您的 mongo-exp 容器。

services: 
  ...
    
  mongo-exp:
    ...
    depends_on: 
      - mongodb networks: dbpvt:**
    restart_policy:
        condition: on-failure

如果这不起作用,您可以更新您的 mongo-exp 入口点以等待您的 mongo 服务开始接受请求。 depends_on 只检查服务是否正在运行,但不检查它是否准备好接受请求。

【讨论】:

谢谢...重启策略也有帮助,链接中给出的解决方案也有帮助

以上是关于如何使用 docker-compose 在 docker 容器之间建立依赖关系 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

centos7 安装docker-compose

Doc-Compose

使用 docker-compose 在 Windows 上构建气流时出错

docker-compose

docker-compose 启动容器

docker-compose 和 django 出错