반응형
해볼거
- 인텔리제이로 현재 프로젝트 도커이용해서 실행
- 내부에 다른 프로젝트 jar 도 도커로 실행시켜둠 (api 서버용)
- 현재 프로젝트는 jar 로 빌드해서 도커에서 실행되도록
- 해당 프로젝트 인텔리제이에서 실시간으로 디버깅 하기
프로젝트 구성
jar 로 실행시킬 api 앱 생성
rest api 2개 응답하는 앱 생성 후 jar 로 말기

현재 프로젝트 생성
위 jar 로 실행시킨 api 서버로 요청 보내고 응답 보여주는 앱 만들기

도커 파일 생성
- api 앱 도커 파일
FROM openjdk:17-jdk-slim
COPY *.jar /app/app.jar
# 작업 디렉토리 설정
WORKDIR /app
# 포트 8888에서 실행
EXPOSE 8888
CMD ["java", "-jar", "/app/app.jar"]
- 현재 프로젝트용 도커 파일
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"]
- 도커 컴포즈 파일
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 |
반응형
해볼거
- 인텔리제이로 현재 프로젝트 도커이용해서 실행
- 내부에 다른 프로젝트 jar 도 도커로 실행시켜둠 (api 서버용)
- 현재 프로젝트는 jar 로 빌드해서 도커에서 실행되도록
- 해당 프로젝트 인텔리제이에서 실시간으로 디버깅 하기
프로젝트 구성
jar 로 실행시킬 api 앱 생성
rest api 2개 응답하는 앱 생성 후 jar 로 말기

현재 프로젝트 생성
위 jar 로 실행시킨 api 서버로 요청 보내고 응답 보여주는 앱 만들기

도커 파일 생성
- api 앱 도커 파일
FROM openjdk:17-jdk-slim
COPY *.jar /app/app.jar
# 작업 디렉토리 설정
WORKDIR /app
# 포트 8888에서 실행
EXPOSE 8888
CMD ["java", "-jar", "/app/app.jar"]
- 현재 프로젝트용 도커 파일
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"]
- 도커 컴포즈 파일
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 |