当前位置: 首页 > 知识库问答 >
问题:

Docker服务运行状况检查不适用于spring boot应用程序

暴英达
2023-03-14

我正在运行我的spring boot web应用程序作为docker服务,它在没有健康检查的情况下运行良好。

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

我创建了restendpoint,并简单地返回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秒才能启动和运行。

共有1个答案

艾自强
2023-03-14

确保"curl"已安装在容器中。--Health-cmd="curl-静默-失败localhost:8090/health|退出1"可能失败。其他一切看起来都很好。

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

sudo docker inspect --format='{{json .State.Health}}' [container-name-or-id]
 类似资料:
  • 我已经用spring Security保护了我的spring boot应用程序(基本身份验证)。我为可以使用监视和管理的用户添加了角色管理。我设置management.security.roles=management。具有此角色的用户只能看到状态(使用运行状况终结点)。如果我设置management.security.role=management,则一切正常(具有此角色的用户可查看所有健康参数

  • 我在我的项目中使用带有MongoDb和Elasticsearch的Springboot。当我的Elasticsearch服务器运行时,我的Springboot应用程序运行良好,但当Elasticsearch服务器停止时,我的Springboot应用程序也无法启动。根据我的项目要求,即使Elasticsearch服务器无法启动,我们的Springboot应用程序仍应运行,因为我们的大多数API都是基

  • 我试图理解docker编写健康检查选项是如何工作的。 运行状况检查:间隔:1 分钟30 秒超时:10 秒重试次数:3 我是否可以说这个配置将每90秒轮询一个容器,然后如果容器在10秒后超时,则群将再次尝试3次,之后它将标记容器终止并创建一个新容器来替换它 此处的文档 https://docs.docker.com/compose/compose-file/compose-file-v3/ 没什么帮

  • 是否存在SQS的Spring引导执行器健康检查终结点?我已经构建了一个SQS使用者,我想检查SQS是否已启动并运行。我没有使用JMSlistener连接到SQS,而是使用Spring云库。 我实现了以下健康检查endpoint。当我删除队列并尝试命中运行状况检查endpoint时,这将返回以下错误。如果存在连接性问题或SQS服务关闭,是否会出现类似的错误,最终导致健康检查endpoint失败? 豆

  • 我有一个与这里类似的情况:Spring Cloud Stream和RabbitMQ健康检查 错误信息 环境: Java 8 Grails 3.3.8 弹簧-拉比-1.7.9.释放 弹簧引导致动器-1.5.15.释放 KeyCloak服务器4.6.0.final 知道怎么能让兔子在这里停用吗?