背景简介
在 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
以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言讨论。