如何使用 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 容器之间建立依赖关系 [重复]的主要内容,如果未能解决你的问题,请参考以下文章