不健康时如何开始服务?

时间:2019-02-13 01:01:44

标签: docker-compose dockerfile

我已经在Dockerfile服务中使用,该服务依赖于另一服务,但是我想在 service_healthy时取消条件。与以下内容相反:

service1:
    depends_on:
      service2:
        condition: service_healthy

因此,基本上我想在service2运行不正常时启动service1。

第二,基于documentation for depends_oncondition选项已被删除,在Compose文件格式的版本3中不再受支持。

那么如何实现以上逻辑?

1 个答案:

答案 0 :(得分:0)

这是一种解决方法,其中main容器通过对其他主机执行ping操作并等待它们均处于脱机状态来等待其他主机退出:

version: '3'
services:
  main:
    image: bash
    depends_on:
     - test01
     - test02
    command: bash -c "sleep 2 && until ! ping -qc1 test01 && ! ping -qc1 test02; do sleep 1; done &>/dev/null"
    networks:
      intra:
        ipv4_address: 172.10.0.254
  test01:
    image: bash
    hostname: test01
    command: bash -c "ip route && sleep 10"
    networks:
      intra:
        ipv4_address: 172.10.0.11
  test02:
    image: bash
    hostname: test02
    command: bash -c "ip route && sleep 20"
    networks:
      intra:
        ipv4_address: 172.10.0.12
networks:
  intra:
    driver: bridge
    ipam:
      config:
      - subnet: 172.10.0.0/24

另请参阅:Docker compose - Start service only when other service had completed