背景简介
在 docker compose 配置文件中配置容器重启策略和健康监控。
环境信息
- Docker 28.0.4 【Docker - Debian 安装】
示例信息
- 启动 Nginx 容器并监控容器状态
- 容器报错时重启
- 每30秒测试容器状态
 
详细步骤
第一步: 更新配置文件,增加 restart 和 healthcheck
services:
  dev-nginx:
    container_name: dev-nginx
    image: nginx:1.27.4
    ports:
      - "80:80"
    volumes:
      - .data/etc/nginx/conf.d/:/etc/nginx/conf.d/
    networks:
      - dev-nginx-net
    restart: always  # 添加这行,确保容器总是尝试重启
    healthcheck:  # 添加健康检查配置
      test: ["CMD-SHELL", "bash -c 'ping -c 1 localhost > /dev/null && echo 0 || echo 1'"]   # 使用ping命令检查Nginx是否响应
      interval: 30s  # 每30秒执行一次健康检查
      timeout: 10s  # 健康检查的超时时间
      retries: 3  # 健康检查失败后重试的次数
      start_period: 40s  # 容器启动后等待多长时间开始健康检查
      
networks:
  dev-nginx-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/16
          gateway: 172.20.0.1
其他健康检查指令
- 如存在 wget 指令,则可采用 test: ["CMD", "wget", "-q", "-O", "-", "http://localhost"]来进行健康检查
- 如存在 curl 指令,则可采用 test: ["CMD", "curl", "-f", "http://localhost"]来进行健康检查
第二步: 重启并查看状态
- 重启容器
$ docker compose up -d
- 查看容器状态
 $ docker container ls | grep dev-nginx
bc188dcd6102   nginx:1.27.4   "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes (healthy)   0.0.0.0:80->80/tcp, [::]:80->80/tcp   dev-nginx
以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言讨论。