Docker Health Checks đĨ â
āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰ āĻāϞāĻā§ (Running) āĻŽāĻžāύā§āĻ āĻāĻ āύ⧠āϝ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāĻā§āĨ¤ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻšā§āϝāĻžāĻ āĻšā§ā§ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āĻŦāĻž āĻāύā§āĻāĻžāϰāύāĻžāϞ āĻāϰāϰā§āϰ āĻāĻžāϰāĻŖā§ āϰā§āϏāĻĒāύā§āϏ āύāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āĻ āĻŦāϏā§āĻĨāĻž āĻļāύāĻžāĻā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝāĻ Health Checks āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤
ā§§. Health Check āĻāĻŋ? â
Health Check āĻšāϞ⧠āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽ āϝāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĄāĻāĻžāϰ āĻāĻā§āĻāĻŋāύ āύāĻŋā§āĻŽāĻŋāϤ āĻŦāĻŋāϰāϤāĻŋāϤ⧠āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻā§āϤāϰ⧠āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŽāĻžāύā§āĻĄ āϰāĻžāύ āĻāϰ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āĻĻā§āĻā§ āϝ⧠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϏā§āϏā§āĻĨ (Healthy) āĻāĻā§ āĻāĻŋāύāĻžāĨ¤
āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āϤāĻŋāύāĻāĻŋ āĻ āĻŦāϏā§āĻĨāĻž āĻšāϤ⧠āĻĒāĻžāϰā§:
- Starting: āĻāύā§āĻā§āĻāύāĻžāϰ āĻļā§āϰ⧠āĻšāĻā§āĻā§ āĻāĻŋāύā§āϤ⧠āĻāĻāύ⧠āĻšā§āϞāĻĨ āĻā§āĻ āĻļā§āώ āĻšā§āύāĻŋāĨ¤
- Healthy: āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āĻ āĻŋāĻāĻŽāϤ⧠āĻāĻžāĻ āĻāϰāĻā§āĨ¤
- Unhealthy: āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϰā§āϏāĻĒāύā§āϏ āĻāϰāĻā§ āύāĻž āĻŦāĻž āĻāϰāϰ āĻĻāĻŋāĻā§āĻā§āĨ¤
⧍. Dockerfile-āĻ HEALTHCHECK āĻāύā§āϏāĻā§āϰāĻžāĻāĻļāύ â
āĻāĻĒāύāĻŋ Dockerfile-āĻ HEALTHCHECK āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻšā§āϞāĻĨ āĻā§āĻ āĻĄāĻŋāĻĢāĻžāĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
# āĻĒā§āϰāϤāĻŋ ā§Šā§Ļ āϏā§āĻā§āύā§āĻĄ āĻĒāϰ āĻĒāϰ āĻā§āĻ āĻāϰāĻŦā§
# ā§Š āϏā§āĻā§āύā§āĻĄā§āϰ āĻŽāϧā§āϝ⧠āϰā§āϏāĻĒāύā§āϏ āύāĻž āĻĒā§āϞ⧠āĻĢā§āĻāϞ āϧāϰāĻŦā§
# āĻāĻžāύāĻž ā§Š āĻŦāĻžāϰ āĻĢā§āĻāϞ āĻāϰāϞ⧠āĻāύā§āĻā§āĻāύāĻžāϰāĻā§ Unhealthy āĻā§āώāĻŖāĻž āĻāϰāĻŦā§
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
CMD curl -f http://localhost/ || exit 1--interval: āĻāϤ āϏāĻŽā§ āĻĒāϰāĻĒāϰ āĻā§āĻ āĻāϰāĻŦā§ (Default: 30s)āĨ¤--timeout: āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻļā§āώ āĻšāϤ⧠āϏāϰā§āĻŦā§āĻā§āĻ āĻāϤ āϏāĻŽā§ āύā§āĻŦā§ (Default: 30s)āĨ¤--retries: āĻāϤāĻŦāĻžāϰ āĻĢā§āĻāϞ āĻāϰāϞ⧠Unhealthy āϧāϰāĻž āĻšāĻŦā§ (Default: 3).--start-period: āĻāύā§āĻā§āĻāύāĻžāϰ āĻļā§āϰ⧠āĻšāĻā§āĻžāϰ āĻĒāϰ āĻāϤāĻā§āώāĻŖ āĻšā§āϞāĻĨ āĻā§āĻ āĻŦāύā§āϧ āĻĨāĻžāĻāĻŦā§ (āϝāĻžāϤ⧠āĻ ā§āϝāĻžāĻĒ āĻŦā§āĻ āĻšāĻā§āĻžāϰ āϏāĻŽā§ āĻĒāĻžā§)āĨ¤
ā§Š. Docker Compose-āĻ Health Check â
āĻĄāĻāĻžāϰ āĻāĻŽā§āĻĒā§āĻ āĻĢāĻžāĻāϞ⧠āĻāĻĒāύāĻŋ āĻāϰāĻ āϏāĻšāĻā§ āĻšā§āϞāĻĨ āĻā§āĻ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
services:
web:
image: my-web-app
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
restart: alwaysā§Ē. āĻā§āύ Health Check āĻĒā§āϰā§ā§āĻāύ? â
- Self-Healing: āϝāĻĻāĻŋ āĻā§āύ⧠āĻāύā§āĻā§āĻāύāĻžāϰ
UnhealthyāĻšā§ā§ āϝāĻžā§, āϤāĻŦā§ āĻĄāĻāĻžāϰ (āĻŦāĻž āĻ āϰā§āĻā§āϏā§āĻā§āϰā§āĻāϰ āϝā§āĻŽāύ Swarm/K8s) āϏā§āĻāĻŋāĻā§ āĻ āĻā§āĻŽā§āĻāĻŋāĻ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ - Load Balancer Integration: āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ
HealthyāĻāύā§āĻā§āĻāύāĻžāϰāĻā§āϞā§āϤ⧠āĻā§āϰāĻžāĻĢāĻŋāĻ āĻĒāĻžāĻ āĻžāĻŦā§āĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āĻāύā§āĻā§āĻāύāĻžāϰ āĻĄāĻžāĻāύ āĻĨāĻžāĻā§, āϤāĻŦā§ āĻāĻāĻāĻžāϰ āϏā§āĻāĻŋ āĻā§āϰ āĻĒāĻžāĻŦā§ āύāĻžāĨ¤ - Zero-Downtime Deployment: āĻāĻĒāĻĄā§āĻ āĻĻā§āĻā§āĻžāϰ āϏāĻŽā§ āύāϤā§āύ āĻāύā§āĻā§āĻāύāĻžāϰ āĻĒā§āϰā§āĻĒā§āϰāĻŋ
HealthyāύāĻž āĻšāĻā§āĻž āĻĒāϰā§āϝāύā§āϤ āĻĒā§āϰāύ⧠āĻāύā§āĻā§āĻāύāĻžāϰ āĻŦāύā§āϧ āĻāϰāĻž āĻšā§ āύāĻžāĨ¤
ā§Ģ. āĻŦā§āϏā§āĻ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ (Best Practices) â
- āϏāĻ āĻŋāĻ āĻāĻŽāĻžāύā§āĻĄ āύāĻŋāϰā§āĻŦāĻžāĻāύ: āĻļā§āϧā§āĻŽāĻžāϤā§āϰ
curlāύā§, āĻĒā§āϰā§ā§āĻāύ āĻšāϞ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻžāύā§āĻāĻļāύ āĻŦāĻž āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āĻšā§āϞāĻĨ āĻāύā§āĻĄāĻĒā§ā§āύā§āĻ (/health) āĻā§āĻ āĻāϰā§āύāĨ¤ - āϰāĻŋāϏā§āϰā§āϏ āϏāĻā§āϤāύāϤāĻž: āĻšā§āϞāĻĨ āĻā§āĻ āĻāĻŽāĻžāύā§āĻĄ āϝā§āύ āĻā§āĻŦ āĻŦā§āĻļāĻŋ āĻšā§āĻāĻŋ (Heavy) āύāĻž āĻšā§, āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻāύāĻāύ āϰāĻžāύ āĻšā§āĨ¤
- exit āĻā§āĻĄ: āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āϏāĻĢāϞ āĻšāϞā§
exit 0āĻāĻŦāĻ āĻŦā§āϝāϰā§āĻĨ āĻšāϞā§exit 1āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ (Summary) â
āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻšāĻžāĻ-āĻ ā§āϝāĻžāĻā§āĻāϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ (High Availability) āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠Health Check āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻ āĻĒāϰāĻŋāĻšāĻžāϰā§āϝāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏā§āĻā§āϝāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋ āĻŦāĻžā§āĻžāϤ⧠āĻāĻŦāĻ āĻŽā§āϝāĻžāύā§ā§āĻžāϞ āĻāύā§āĻāĻžāϰāĻā§āύāĻļāύ āĻāĻŽāĻžāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
TIP
āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āĻāĻāĻāĻŋ āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ /health āĻŦāĻž /status āĻāύā§āĻĄāĻĒā§ā§āύā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ āϝāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻŦāĻ āĻ
āύā§āϝāĻžāύā§āϝ āϏāĻžāϰā§āĻāĻŋāϏā§āϰ āĻ
āĻŦāϏā§āĻĨāĻž āĻā§āĻ āĻāϰ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦā§āĨ¤