我在 Docker 容器中运行 Spring Boot 应用程序,使用 Docker 文件在容器中启动应用程序。如何检查容器内 Spring Boot 应用程序的运行状况?
如果容器停止或应用程序没有运行,我需要根据健康检查自动重启容器或应用程序。这样,我可以确保 Spring Boot 应用程序始终启动并运行。
我在 Docker 容器中运行 Spring Boot 应用程序,使用 Docker 文件在容器中启动应用程序。如何检查容器内 Spring Boot 应用程序的运行状况?
如果容器停止或应用程序没有运行,我需要根据健康检查自动重启容器或应用程序。这样,我可以确保 Spring Boot 应用程序始终启动并运行。
如果你想使用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)
这对我有用
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
我的 Spring Boot 服务器对索引进行了重定向,因此我使用重定向进行健康检查,如下所示:
healthcheck:
test: curl -Is localhost:8080 | head -n 1 | grep 302 || exit 1
有很多方法可以独立监控 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---重启