ERP-node/backend/Dockerfile

48 lines
1.3 KiB
Docker
Raw Normal View History

2025-08-21 09:41:46 +09:00
# 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"]