Docker Don';如果依赖项容器healthcheck导致不健康,则不要启动依赖项容器
我在docker composeDocker Don';如果依赖项容器healthcheck导致不健康,则不要启动依赖项容器,docker,docker-compose,Docker,Docker Compose,我在docker composeA、B和C中定义了3项服务B和C取决于A。如果A的healthcheck导致不健康,我希望其他两个容器不要旋转。目前,只有当容器A以health状态启动时,才会启动容器B和C,这是我的预期行为。但是,如果容器A在创建后变得不健康,我不希望相关容器启动,当前当A被创建并变得不健康时,其他两个容器中只有一个退出(有时A退出,有时B但不能同时退出)。以下是A不正常时的输出 Creating A ... done Creating C ... done ERROR:
A
、B
和C
中定义了3项服务<代码>B和C取决于A
。如果A
的healthcheck
导致不健康
,我希望其他两个容器不要旋转。目前,只有当容器A
以health
状态启动时,才会启动容器B
和C
,这是我的预期行为。但是,如果容器A
在创建后变得不健康
,我不希望相关容器启动,当前当A
被创建并变得不健康
时,其他两个容器中只有一个退出(有时A
退出,有时B
但不能同时退出)。以下是A
不正常时的输出
Creating A ... done
Creating C ... done
ERROR: for B Container "1339a6d12091" is unhealthy. ERROR: Encountered errors while bringing up the project.
正如我们在错误消息中看到的,只有B
显示1339a6d12091
(容器A
)不健康。然而,对于B
和C
容器,它都应该报告此错误
docker compose
version: '2.3'
services:
B:
image: base_image
depends_on:
A:
condition: service_healthy
entrypoint: bash -c "/app/entrypoint_scripts/execute_B.sh"
C:
image: base_image
depends_on:
A:
condition: service_healthy
entrypoint: bash -c "/app/entrypoint_scripts/execute_C.sh"
A:
image: base_image
healthcheck:
test: ["CMD-SHELL", "test -f /tmp/compliance/executedfetcher"]
interval: 30s
timeout: 3600s
retries: 1
entrypoint: bash -c "/app/entrypoint_scripts/execute_A.sh"
我的期望:B
和C
应该等到A
变得健康后再开始(这对我来说很好)。如果A
启动并变得不健康
而没有变得健康
即使只有一次B
和C
也不应该启动。容器A
在变得不健康后立即退出,状态:不健康
的可用时间不够长,其他容器无法读取其值。状态:不健康
仅在几分之一秒内可见,在这几分之一秒内,只有一个容器(无论是a
还是B
)能够读取它
在容器变得不健康后,我在execute_a.sh
entrypoint脚本中添加了sleep 100
语句,这样B
和C
都可以轻松读取a
的状态,这就解决了问题。这是否回答了您的问题@不,这似乎没有什么帮助。答案告诉你,条件
不再受支持