Skip to content

Commit 4cbb938

Browse files
committed
build(docker): 멀티스테이지 빌드 적용 및 gradle 테스트 제외
- gradle 빌드 스테이지 추가 - 최종 이미지에 실행 JAR만 복사 - `-x test` 옵션으로 테스트 생략 - 런타임 이미지 크기 감소 및 빌드 속도 개선
1 parent 98491f8 commit 4cbb938

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

backend/Dockerfile

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
1-
FROM eclipse-temurin:21-jdk
1+
# ===== 1단계: 빌드 스테이지 =====
2+
FROM gradle:8.5-jdk21 AS build
23

34
WORKDIR /app
45

5-
ARG JAR_FILE=build/libs/backend-0.0.1-SNAPSHOT.jar
6+
# 의존성 캐싱을 위해 필요한 파일들 먼저 복사
7+
COPY gradlew .
8+
COPY gradle gradle
9+
COPY build.gradle .
10+
COPY settings.gradle .
11+
12+
# (선택) 의존성만 먼저 다운받아서 캐시 최적화
13+
RUN ./gradlew dependencies --no-daemon || true
14+
15+
# 나머지 전체 복사
16+
COPY src src
17+
18+
# 빌드 실행
19+
RUN ./gradlew build -x test --no-daemon
620

7-
# jar 파일 복제
8-
COPY ${JAR_FILE} app.jar
21+
# ===== 2단계: 런타임 스테이지 =====
22+
FROM eclipse-temurin:21-jdk
23+
24+
WORKDIR /app
925

10-
# 인자 설정 부분과 jar 파일 복제 부분 합쳐서 진행해도 무방
11-
#COPY build/libs/*.jar app.jar
26+
# 빌드 스테이지에서 생성된 JAR 복사
27+
COPY --from=build /app/build/libs/*.jar app.jar
1228

13-
# 실행 명령어
29+
# 실행
1430
ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "app.jar"]

0 commit comments

Comments
 (0)