인텔리제이 도커 디버깅

2025. 4. 3.·Tool/IntelliJ
목차
  1. jar 로 실행시킬 api 앱 생성
  2. 현재 프로젝트 생성
  3. 도커 파일 생성
  4. 전체 프로젝트 구성
  5. 1. run configuration 추가
  6. 2. docker compose 선택
  7. 3. docker-compose.yml 파일 지정
  8. 4. 실행
  9. 5. 확인
  10. 1. 도커파일에 디버깅 옵션 추가
  11. 2. 인텔리제이 run configuration 추가
  12. 확인
  13. 1. 도커 재실행시 프로젝트 변경사항 적용
  14. 2. 도커 컨테이너 내부의 네트워크 통신
반응형

해볼거

  1. 인텔리제이로 현재 프로젝트 도커이용해서 실행
  • 내부에 다른 프로젝트 jar 도 도커로 실행시켜둠 (api 서버용)
  • 현재 프로젝트는 jar 로 빌드해서 도커에서 실행되도록
  1. 해당 프로젝트 인텔리제이에서 실시간으로 디버깅 하기

프로젝트 구성

jar 로 실행시킬 api 앱 생성

rest api 2개 응답하는 앱 생성 후 jar 로 말기

 

현재 프로젝트 생성

위 jar 로 실행시킨 api 서버로 요청 보내고 응답 보여주는 앱 만들기

 

도커 파일 생성

  1. api 앱 도커 파일
FROM openjdk:17-jdk-slim
COPY *.jar /app/app.jar
# 작업 디렉토리 설정
WORKDIR /app
# 포트 8888에서 실행
EXPOSE 8888
CMD ["java", "-jar", "/app/app.jar"]
  1. 현재 프로젝트용 도커 파일
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY . .
# Gradle 빌드 (캐싱을 활용해 빌드 최적화)
RUN ./gradlew clean build -x test
# 디버깅 활성화 (포트 5005)
ENV JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
# 생성된 JAR 파일 실행 (build/libs/ 에 생성됨)
CMD ["java", "-jar", "/app/build/libs/test_s.jar"]
  1. 도커 컴포즈 파일
version: "3.8"
services:
test-api:
build:
context: ./docker/ # test-api의 Dockerfile 위치
container_name: test-api
ports:
- "8888:8080"
networks:
- my-network
current-app:
build: .
container_name: test_s
ports:
- "8080:8080" # 현재 프로젝트 포트 설정
- "5005:5005" # 디버깅 포트 추가
networks:
- my-network
networks:
my-network:
driver: bridge

전체 프로젝트 구성

 

인텔리제이에서 도커 실행

1. run configuration 추가

 

2. docker compose 선택

 

3. docker-compose.yml 파일 지정

 

4. 실행

 

5. 확인

 

 

인텔리제이에서 도커 디버깅

1. 도커파일에 디버깅 옵션 추가

ENV JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"

2. 인텔리제이 run configuration 추가

 

  • 위에서 설정한 것과 동일한 포트 설정
  • command line 설정 추가
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
  •  

확인

 

 

Tip

1. 도커 재실행시 프로젝트 변경사항 적용

시작 옵션에 build always

위처럼 하면 이미지가 계속 쌓임. 해결 방법이나 다른 방안 찾아봐야함

ex) 소스파일 볼륨처리 후 내부에서 build 하는 방식?

2. 도커 컨테이너 내부의 네트워크 통신

내부끼리 통신할떄 localhost?

network bridge 모드 사용하면 172.17.0.1 이 로컬호스트 처럼 동작함

반응형
저작자표시 (새창열림)

'Tool > IntelliJ' 카테고리의 다른 글

[인텔리제이] 자주쓰는 축약어 (자바)  (0) 2024.07.22
[인텔리제이] IntelliJ Tomcat 업로드 파일 경로 설정  (0) 2024.05.08
[인텔리제이] 인텔리제이 시작화면 설정  (0) 2021.12.03
인텔리제이 단축키 모음  (0) 2021.12.03
[인텔리제이] 인텔리제이 한끌 깨짐 해결방법  (0) 2021.12.03
  1. jar 로 실행시킬 api 앱 생성
  2. 현재 프로젝트 생성
  3. 도커 파일 생성
  4. 전체 프로젝트 구성
  5. 1. run configuration 추가
  6. 2. docker compose 선택
  7. 3. docker-compose.yml 파일 지정
  8. 4. 실행
  9. 5. 확인
  10. 1. 도커파일에 디버깅 옵션 추가
  11. 2. 인텔리제이 run configuration 추가
  12. 확인
  13. 1. 도커 재실행시 프로젝트 변경사항 적용
  14. 2. 도커 컨테이너 내부의 네트워크 통신
'Tool/IntelliJ' 카테고리의 다른 글
  • [인텔리제이] 자주쓰는 축약어 (자바)
  • [인텔리제이] IntelliJ Tomcat 업로드 파일 경로 설정
  • [인텔리제이] 인텔리제이 시작화면 설정
  • 인텔리제이 단축키 모음
keartt
keartt
shalpha_2@naver.com
주니어 탈출일기shalpha_2@naver.com
주니어 탈출일기 🐽
shalpha_2@naver.com
  • keartt
전체
오늘
어제
  • 전체보기
    • CS & 알고리즘
      • CS (컴과학)
      • 알고리즘
      • 백준
    • Spring
      • SpringBoot (JPA)
      • Spring (Legacy)
    • Server
      • Linux
      • Docker
    • Java
      • Design Pattern
    • PostgreSQL
    • GIS (공간정보)
    • 오류정리
    • Git
    • JavaScript
      • Node.js
      • React
    • Tool
      • IntelliJ
      • MacOS
      • VSCode
      • Eclipse
      • Other
    • 강의정리들
      • [2023] FullStack
      • [2022] Spring Boot
      • [2021] Spring Boot

인기 글

태그

이분탐색
브루트포스
코딩애플
구간합
반응형
hELLO· Designed By정상우.v4.6.1
keartt
인텔리제이 도커 디버깅

개인정보

kearttshalpha_2@naver.com계정관리

운영중인 블로그

주니어 탈출일기쓰기블로그 관리

이동링크목록

  • 티스토리 홈
  • 피드
  • 로그아웃
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.