Dockerfile 新增 HEALTHCHECK,healthcheck.sh 需要实现对内部程序状态的检测 HEALTHCHECK –interval=5s –timeout=3s CMD bash /healthcheck.sh || exit 1

测试

# 测试
mkdir nginx && cd nginx

# 编写 Dockerfile
touch test.txt
cat > Dockerfile << EOF
FROM nginx:latest
COPY test.txt /test.txt
HEALTHCHECK --interval=5s --timeout=3s CMD cat /test.txt || exit 1 
EOF

# 打包
# buildctl build
docker build -t nginx:healthcheck .

# 运行
docker run -d --name nginx-healthcheck nginx:healthcheck

# 查看:healthy
docker ps
# STATUS                
# Up 5 seconds (healthy)  标记了healthy状态

# 检测
docker inspect --format='{{json .State.Health}}' nginx-healthcheck
docker inspect --format='{{json .State.Health.Status}}' nginx-healthcheck

# 异常测试
docker exec -it nginx-healthcheck rm /test.txt
docker ps
# Up About a minute (unhealthy)

# 恢复
docker exec -it nginx_healthcheck touch /test.txt

参考