学习优先级:★★★★☆

易用性:★★★☆☆

在 Docker Compose 中,healthcheck 参数用于定期检查容器的可用性和功能性。这有助于确保服务在其他服务访问之前正确运行。

healthcheck 可以检查特定端口是否开放或某个进程是否运行,并据此将容器的状态标记为“健康”或“不健康”。

示例代码

version: '3'

services:
  web:
    image: nginx
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

执行结果

运行此配置后,容器每 30 秒检查一次。如果 Web 服务器不可用,容器的状态将被标记为“不健康”。

补充说明

healthcheck 参数的各个字段说明:

  • test:定义检查命令。如果命令返回状态码 0,则检查通过。
  • interval:检查间隔时间。
  • timeout:单次检查的超时时间。
  • retries:连续失败次数达到此值时,容器状态才标记为“不健康”。
  • start_period:容器启动后,开始执行健康检查前的等待时间。

补充说明

当容器被标记为“不健康”时,可以使用 Docker Swarm 或 Kubernetes 等工具来自动修复或重启容器。这有助于提高系统的可靠性和可用性。