# Build stage FROM eclipse-temurin:17-jdk-alpine as build WORKDIR /app # 필수 패키지 설치 RUN apk add --no-cache wget unzip curl # Gradle을 직접 설치 RUN wget https://services.gradle.org/distributions/gradle-8.5-bin.zip -P /tmp && \ unzip -d /opt/gradle /tmp/gradle-8.5-bin.zip && \ rm /tmp/gradle-8.5-bin.zip ENV PATH=/opt/gradle/gradle-8.5/bin:$PATH # 프로젝트 파일 복사 COPY build.gradle settings.gradle ./ COPY src src # 의존성 다운로드 및 빌드 RUN gradle dependencies --no-daemon && \ gradle bootJar --no-daemon # Runtime stage FROM eclipse-temurin:17-jre-alpine # 필수 패키지만 설치 (폰트 문제 해결을 위해 최소화) RUN apk add --no-cache curl tzdata WORKDIR /app # 빌드된 JAR 파일 복사 COPY --from=build /app/build/libs/*.jar app.jar # 한글 인코딩 환경변수 설정 ENV LANG=C.UTF-8 ENV TZ=Asia/Seoul # JVM 옵션 설정 (한글 처리 최적화) ENV JAVA_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Seoul -Djava.awt.headless=true" # 헬스체크 HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:8080/api/actuator/health || exit 1 EXPOSE 8080 ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar --spring.profiles.active=dev"]