Docker 服务健康检查不适用于 Spring Boot 应用程序

Nit*_*iya 3 java docker spring-boot

我正在将 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
Run Code Online (Sandbox Code Playgroud)

输出:

s43fbah1qdlxb01s4x5veecos
overall progress: 0 out of 1 tasks 
1/1: starting  [============================================>      ] 
Run Code Online (Sandbox Code Playgroud)

没有健康检查的命令:

sudo docker service create \
    --name=my-service \
    -p "8090:8090" \
    my-docker-img
Run Code Online (Sandbox Code Playgroud)

我的 Spring Boot 应用程序需要 20 秒才能启动并运行。

Nit*_*esh 5

确保容器中安装了“curl”。 --health-cmd="curl --silent --fail localhost:8090/health || exit 1"可能会失败。其他一切看起来都很好。

以下命令将帮助您调试问题。您将能够看到日志:

sudo docker inspect --format='{{json .State.Health}}' [container-name-or-id]
Run Code Online (Sandbox Code Playgroud)