【问题标题】:Health check - web健康检查 - 网络
【发布时间】:2018-12-30 08:53:15
【问题描述】:
目前我正在尝试检查在 docker 容器中运行的 Web 服务是否健康,以及其 HTTP 状态代码是否为 200。
但是内置健康检查的码头工人只检查退出代码。
我正在通过终端运行这个命令:
curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8080/api/health
并检查返回的状态码是否为 200。
如何将这个嵌入到 dockers healthcheck 中?
【问题讨论】:
标签:
docker
http
docker-compose
【解决方案1】:
您可以使用HEALTHCHECK 仅检查命令的退出代码值的事实,如下所示:
- 使用
curl中的-w和-s选项只输出api请求的http状态码
- 使用 bash 测试表达式检查状态码
Dockerfile 中的HEALTHCHECK 可能如下所示:
HEALTHCHECK --interval=20s --retries=2 CMD \
[[ "$(curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8080/api/health)" == "200" ]]
参见文档here