8

我在 Docker 容器中运行 Spring Boot 应用程序,使用 Docker 文件在容器中启动应用程序。如何检查容器内 Spring Boot 应用程序的运行状况?

如果容器停止或应用程序没有运行,我需要根据健康检查自动重启容器或应用程序。这样,我可以确保 Spring Boot 应用程序始终启动并运行。

4

4 回答 4

17

如果你想使用spring boot actuator/health作为docker healthcheck,你必须像这样在你的docker-compose 文件中添加它:

    healthcheck:
      test: "curl --fail --silent localhost:8081/actuator/health | grep UP || exit 1"
      interval: 20s
      timeout: 5s
      retries: 5
      start_period: 40s

编辑: 这里的端口是management.server.port. 如果您没有指定它,它应该是server.port value(默认为 8080)

于 2019-12-17T22:39:56.837 回答
3

这对我有用

 healthcheck:
  test: curl -m 5 --silent --fail --request GET http://localhost:8080/actuator/health | jq --exit-status -n 'inputs | if has("status") then .status=="UP" else false end' > /dev/null || exit 1
  interval: 10s
  timeout: 2s
  retries: 10
于 2021-02-22T13:16:33.657 回答
0

我的 Spring Boot 服务器对索引进行了重定向,因此我使用重定向进行健康检查,如下所示:

healthcheck:
  test: curl -Is localhost:8080 | head -n 1 | grep 302 || exit 1
于 2022-02-25T22:25:00.983 回答
-2

有很多方法可以独立监控 Spring Boot 应用程序的基础知识,您可以使用 Spring Boot 执行器。您可以在与应用程序服务器端口不同的端口上公开“管理健康端口”(如果您使用的是 rest api)。

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html

只需在您的 pom.xml 中包含 spring actuator 依赖项并在您的 applicaiton.properties/.yml 中配置它,这将公开上述链接中列出的端点。

您可以使用 docker healthcheck 来检查应用程序的运行状况:

https://docs.docker.com/engine/reference/builder/#healthcheck

您可以设置重启策略以确保容器在崩溃时重启:

https://docs.docker.com/engine/reference/run/#restart-policies---重启

于 2019-08-16T07:53:32.203 回答