programing

도커 컨테이너에서 실행되는 Spring Boot 응용 프로그램의 상태를 확인하는 방법은 무엇입니까?

abcjava 2023. 8. 4. 22:34
반응형

도커 컨테이너에서 실행되는 Spring Boot 응용 프로그램의 상태를 확인하는 방법은 무엇입니까?

Docker 파일을 사용하여 Docker 컨테이너 내에서 Spring Boot 응용 프로그램을 실행하여 컨테이너 내에서 Docker 파일을 사용하여 컨테이너 내에서 응용 프로그램을 시작합니다.용기 내에서 스프링 부트 응용 프로그램의 상태를 확인하려면 어떻게 해야 합니까?

컨테이너가 중지되거나 응용 프로그램이 실행되고 있지 않으면 상태 검사에 따라 컨테이너 또는 응용 프로그램을 자동으로 다시 시작해야 합니다.이렇게 하면 Spring Boot 응용 프로그램이 항상 실행되고 실행되도록 할 수 있습니다.

스프링 부츠를 사용하고 싶은 경우 actuator/health도커 상태 점검을 위해 도커 검색 파일에 다음과 같이 추가해야 합니다.

    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

서버가 인덱스에서 리디렉션을 수행하므로 다음과 같은 상태 검사에 리디렉션을 사용합니다.

healthcheck:
  test: curl -Is localhost:8080 | head -n 1 | grep 302 || exit 1

스프링 부트 응용 프로그램을 독립 실행형으로 모니터링하기 위한 기본적인 작업을 수행하는 많은 방법에서 스프링 부트 액추에이터를 사용할 수 있습니다.응용프로그램 서버 포트와 별도의 포트에 있는 "관리 상태 포트"를 노출할 수 있습니다(rest api를 사용하는 경우).

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

스프링 액추에이터 종속성을 pom.xml에 포함하고 application.properties/.yml에 구성하면 위 링크에 나열된 엔드포인트가 노출됩니다.

도커 상태 검사를 사용하여 응용 프로그램의 상태를 확인할 수 있습니다.

https://docs.docker.com/engine/reference/builder/ #상태 점검

컨테이너가 충돌했을 때 컨테이너가 다시 시작되도록 재시작 정책을 설정할 수 있습니다.

https://docs.docker.com/engine/reference/run/ #http-messages---messages

언급URL : https://stackoverflow.com/questions/57515333/how-to-do-a-health-check-of-a-spring-boot-application-running-in-a-docker-contai

반응형