[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)