跳至主要内容

[Dockerfile] HEALTHCHECK 健康檢查

前言

在沒有 HEALTHCHECK 指令之前, Docker 只能透過 process 是否退出來判斷 container 的狀態. 不過有時候是服務已經無法正常運作了, 但 process 沒有退出, 這樣會導致該服務仍然可以接收用戶請求, 但是無法正常回應.

Health Check

在 Docker 版本 1.12 之後提供了 HEALTHCHECK 指令, 可以設定一行 command 用來判斷服務的狀態是否正常, 這樣可以更準確地判斷服務狀態.

Container 啟動後的初始狀態為 starting, 在 HEALTHCHECK 指令檢查成功後, 狀態會更改為 healthy. 如果連續失敗超過指定次數則會改為 unhealthy.

format

  • HEALTHCHECK [OPTIONS] CMD command (check container health by running a command inside the container)
  • HEALTHCHECK NONE (disable any healthcheck inherited from the base image)

options

  • --interval=DURATION (default: 30s)
  • --timeout=DURATION (default: 30s)
  • --start-period=DURATION (default: 0s)
  • --retries=N (default: 3)

See Also