Henry
发布于 2025-06-16 / 4 阅读
0
0

Docker - docker compose 配置重启策略和健康监控

背景简介

在 docker compose 配置文件中配置容器重启策略和健康监控。

环境信息

  1. Docker 28.0.4 【Docker - Debian 安装

示例信息

  • 启动 Nginx 容器并监控容器状态
    • 容器报错时重启
    • 每30秒测试容器状态

详细步骤

第一步: 更新配置文件,增加 restarthealthcheck

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

以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言讨论。



评论