docker - 健康检查 - 网络

标签 docker http docker-compose

目前我正在尝试检查在 docker 容器内运行的网络服务是否健康以及它的 HTTP 状态代码是否为 200。

但是内置在 healthcheck 中的 docker 只检查退出代码。

我正在通过终端运行这个命令:

curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8080/api/health

并检查返回的状态码是否为200。 我怎样才能将这个嵌入到 docker healthcheck 中?

最佳答案

您可以使用 HEALTHCHECK 仅检查命令的退出代码值的事实,如下所示:

  1. 使用curl中的-w-s选项只输出api请求的http状态码
  2. 使用 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

关于docker - 健康检查 - 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469723/

相关文章:

linux - docker-compose 找不到合适的配置文件

python - 在 Flask 应用程序中设置和检索环境变量

docker - 使用Dropwizard访问Elasticsearch Docker-拒绝连接

php - curl 发送 Content-length header 的问题

php - Docker compose 命令没有这样的文件

php - Docker-Compose Wordpress:wp_mail()不起作用

docker - 无法构建docker镜像

linux - 在 Docker 容器中运行的进程的主机中的 PID 是什么?

api - REST API设计——查询邮件数据——选哪个毒药?

javascript - 如何允许循环 http 请求延迟,同时使用 Promise.all 检测请求何时完成