docker-compose 和 willfarrell/autoheal 不会通过 exit 2 重新启动容器

docker-compose 和 willfarrell/autoheal 不会通过 exit 2 重新启动容器

即使退出代码为 2,docker-compose 也不会重新启动我的容器docker-compose ps

      Name                     Command                  State         Ports  
-----------------------------------------------------------------------------
app_autoheal_1      /docker-entrypoint autoheal      Up (healthy)                              
seafile             /sbin/my_init -- /scripts/ ...   Exit 2                  

docker-compose.yaml它在with中定义restart: always

version: '3.4'
services:
  autoheal:
    restart: always
    image: willfarrell/autoheal
    environment:
      - AUTOHEAL_CONTAINER_LABEL=all
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  seafile:
    image: seafileltd/seafile-mc:latest
    restart: always
    container_name: seafile
    healthcheck:
      test: ["CMD-SHELL", "test $$(curl -k https://localhost/api2/ping/) = '\"pong\"'"]
      interval: 30s
      timeout: 20s
      retries: 3
      start_period: 30s

在哪些情况下会发生这种情况?

答案1

Docker 保留容器退出值 2。容器应exit 1正确触发健康检查。

命令的退出状态表示容器的健康状态。可能的值包括:

  • 0:成功 - 容器运行正常,可供我们使用
  • 1:不健康 - 容器无法正常工作
  • 2:保留-不要使用此退出代码

来源:https://docs.docker.com/engine/reference/builder/#healthcheck

相关内容