48 lines
1.3 KiB
Docker
48 lines
1.3 KiB
Docker
# 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"] |