Docker Don';如果依赖项容器healthcheck导致不健康,则不要启动依赖项容器

Docker 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:

我在docker compose
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
的状态,这就解决了问题。

这是否回答了您的问题@不,这似乎没有什么帮助。答案告诉你,
条件
不再受支持