我将我的spring boot Web应用程序作为docker服务运行,并且在没有运行状况检查的情况下运行良好。

但是,当我尝试使用运行状况检查选项创建docker服务时,我的服务会在一段时间后(可能在运行状况正常超时后)自动重新启动,并且永远不会稳定。

我创建了\health rest端点,只是返回了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秒钟才能启动并运行。

最佳答案

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

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

sudo docker inspect --format='{{json .State.Health}}' [container-name-or-id]

09-10 07:38
查看更多