如何对在Docker容器中运行的Spring Boot应用程序进行健康检查

时间:2019-08-15 19:46:25

标签: spring-boot docker docker-compose dockerfile

如何检查在docker容器中运行的spring boot应用程序的运行状况以及容器是否停止或该应用程序未运行,我需要根据健康检查状态自动重启容器或应用程序,以便春季启动应用程序将启动并运行每个 有人可以帮我吗,我正在使用docker文件在容器中启动Spring Boot

3 个答案:

答案 0 :(得分:2)

这对我有用

 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

答案 1 :(得分:1)

如果您想使用 spring boot actuator/health作为 docker运行状况检查,则必须在 docker-compose上添加它文件

    healthcheck:
      test: ["CMD", "curl", "--fail", "--silent", "localhost:8081/actuator/health 2>&1 | grep UP || exit 1"]
      interval: 20s
      timeout: 5s
      retries: 5
      start_period: 40s

答案 2 :(得分:0)

使用独立的弹簧启动执行器,有许多方法可以独立监视弹簧启动应用程序。您可以在与应用程序服务器端口不同的端口上公开“管理运行状况端口”(如果使用的是Rest api)。

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

只需在pom.xml中包含弹簧执行器依赖项,然后在applicaiton.properties/.yml中进行配置,这将公开上面链接中列出的端点。

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

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

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

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