프로그래밍/기타

[IntelliJ] docker compose로 실행한 애플리케이션 인텔리제이로 디버깅 하기

jeongseop 2024. 12. 27. 14:14

MSA 프로젝트를 개발하면서 discovery, gateway, config를 포함하여 7개의 마이크로서비스를 docker compose로 하나의 컨테이너로 실행을 하고있다.

 

IntelliJDocker Compose를 활용하여 실행 중인 애플리케이션의 디버깅 환경을 설정하는 방법을 단계별로 정리했다.

 

1. 디버그 포트 노출

  • 각 마이크로서비스에 대해 JVM 디버깅 포트를 노출한다. ( docker-compose.yml 수정)

 

2. environment 에 JVM의 디버그 모드를 활성화 하는 옵션 설정

  • JAVA_TOOL_OPTIONS : JVM의 디버그 모드를 활성화 하는 옵션
  • 모든 서비스는 고유한 디버깅 포트를 사용해야 한다.
  • transport=dt_socket : 디버거와의 통신에 소켓을 사용

 

3. IntelliJ에서 Run/Debug Configuration 생성

  • 인텔리제이 메뉴  Run -> Edit Configurations
  • 새로운 Remote JVM Debug 구성 추가
  • 디버그 포트를 입력한다.

 

4. Docker Compose 실행 -> IntelliJ에서 디버깅

  • 도커 컴포즈로 애플리케이션을 실행
  • Run/Debug Configurations 에서 생성한 Remote Debug 구성을 (디버그 버튼) 으로 시작
  • 설정한 브레이크 포인트에 도달 하면 중단되고 현재상태 등을 확인 할 수 있다.