diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..72f7521 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.git +.gradle +build/ +**/*.log +README.md \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 3be7942..863c3e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,22 @@ -FROM openjdk:21 +# ---------- [1단계: 빌드 전용 스테이지] ---------- +FROM gradle:8.5-jdk21 AS builder +WORKDIR /app + +# 불필요한 파일은 제외하여 캐시 효율 증가 +COPY build.gradle settings.gradle ./ +COPY gradle ./gradle +RUN gradle dependencies --no-daemon || return 0 + +# 나머지 소스 복사 +COPY . . +RUN gradle clean build -x test --no-daemon -# /home/ubuntu/app +# ---------- [2단계: 실행 전용 스테이지] ---------- +FROM openjdk:21-slim WORKDIR /app -COPY *.jar app.jar -ENTRYPOINT ["java","-Dspring.profiles.active=prod","-jar","app.jar"] \ No newline at end of file + +# 빌드된 jar만 복사 → 이미지 최소화 +COPY --from=builder /app/build/libs/*.jar app.jar + +# 실행 +ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "app.jar"]