【发布时间】:2019-03-08 15:33:57
【问题描述】:
我正在将我的 Spring Boot Web 应用程序作为 docker 服务运行,并且在没有运行状况检查的情况下运行良好。
但是当我尝试使用健康检查选项创建 docker 服务时,我的服务会在一段时间后自动重启(可能在健康检查超时之后)并且它永远不会稳定。
我创建了\health 休息端点并且只是返回 ok
这是我用来创建带有健康检查选项和不带它的服务的命令。
带有健康检查选项的命令:
sudo docker service create \
--health-cmd="curl --silent --fail localhost:8090/health || exit 1" \
--health-interval=5s \
--health-retries=12 \
--health-timeout=2s \
--health-start-period=60s \
--name=my-service \
-p "8090:8090" \
my-docker-img
输出:
s43fbah1qdlxb01s4x5veecos
overall progress: 0 out of 1 tasks
1/1: starting [============================================> ]
没有健康检查的命令:
sudo docker service create \
--name=my-service \
-p "8090:8090" \
my-docker-img
我的 Spring Boot 应用程序需要 20 秒才能启动和运行。
【问题讨论】:
-
你为什么创建自己的端点而不使用执行器
/health端点?此外,如果这是在 Spring Boot 2.x 上,则 url 已更改为/actuator/health。 -
我没有使用执行器,它是简单的 hello world 类型的应用程序
-
为什么不使用执行器,而是自己发明。但是不确定为什么会失败。如果结果更频繁,则不是 OK docker 将重新启动容器。所以实际上可能是您自己的端点有问题。
-
这里我在health-cmd中指定了健康检查的url。
标签: java docker spring-boot