6月3日 00:02

Docker 健康检查怎么配?HEALTHCHECK 和 Compose 健康检查详解

Docker 健康检查自动检测容器内应用是否正常——容器运行中不代表应用可用。MySQL 可能在做崩溃恢复,Nginx 可能配置错误 502,但容器状态都是 Up。

Dockerfile 里配置

参数:

  • --interval=30s:每 30 秒检查一次
  • --timeout=5s:5 秒内没响应算失败
  • --retries=3:连续 3 次失败才标记为 unhealthy

健康状态:starting(启动中)→ healthy(健康)→ unhealthy(不健康)

docker-compose.yml 里配置

start_period 很重要——应用启动需要时间(Spring Boot 可能要 30 秒),启动期间的健康检查失败不应该算数。

不同应用的健康检查命令

depends_on 配合健康检查

Compose 的 depends_on 默认只等容器启动,不等应用就绪:

condition: service_healthy 确保 db 真正可用后 web 才启动。比 depends_on: db(只等容器启动)更可靠。

没有 curl 的镜像

Alpine 镜像没有 curl。用 wget 替代:

或者安装 curl:RUN apk add --no-cache curl

标签:Docker