容器 running 不等于服务活着。健康检查让编排器知道该不该把流量发给它。

示例配置

HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD curl -f http://localhost/health || exit 1
# compose 里
healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost/health"]
  interval: 30s

要点速览

  • HEALTHCHECK 探测真实业务端口/路径,而非只看进程在。
  • 连续失败达 retries 才标记 unhealthy,避免抖动误判。
  • 配合编排的 restart 策略,挂了自动拉起。
健康检查回答的是「服务能干活吗」,而不只是「进程在吗」。