gpt4 book ai didi

mongodb - 延迟启动Docker服务,直到MongoDB在不修改Dockerfile的情况下运行

转载 作者:行者123 更新时间:2023-12-02 20:58:30 25 4
gpt4 key购买 nike

我的docker-compose.yml中有两项服务。使用MailHog和MongoDB进行存储的邮件服务。

问题在于,在MailHog之前,MongoDB服务需要启动并运行。否则,MailHog将回退并使用其内存存储。

一个简单的depends_on是不够的,因为MongoDB服务需要一些时间才能启动。

我知道像wait-for-it等脚本,但是它们都需要修改Dockerfile,在本例中,我使用的是未经修改的MailHog Docker镜像。

是否有任何“内置”机制或解决方法,如何在MongoDB准备就绪之前将邮件服务延迟?

mail:
image: mailhog/mailhog:v1.0.0
deploy:
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 60s

mail-db:
image: mongo:4.2.6
environment:
MONGO_INITDB_DATABASE: mailhog
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
ports:
- 27017
deploy:
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.5"
memory: 500M

最佳答案

一种方法是提供自己的entrypoint脚本,您可以使用volumes将其添加到容器中。在脚本中,等待与MongoDB的成功连接,然后执行原始入口点。

堆栈:

volumes:
- /path/to/entrypoint.sh:/tmp/entrypoint.sh
entrypoint: /bin/bash
command: /tmp/entrypoint.sh

entrypoint.sh:
# Wait for service or whatever
exec /path/to/original/entrypoint

关于mongodb - 延迟启动Docker服务,直到MongoDB在不修改Dockerfile的情况下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61681341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com