ERP-node/backend/Dockerfile.mac

53 lines
1.6 KiB
Docker
Raw Permalink Normal View History

2025-08-21 09:41:46 +09:00
# Build stage - Mac native (Apple Silicon/Intel)
FROM eclipse-temurin:17-jdk as build
WORKDIR /app
# Mac에서는 brew나 native 패키지 관리자 사용 가능
# 하지만 Docker 내부이므로 기본 Ubuntu base 사용
RUN apt-get update && apt-get install -y wget unzip curl && \
rm -rf /var/lib/apt/lists/*
# 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
# Mac에서 빌드 성능 최적화
RUN gradle dependencies --no-daemon --parallel && \
gradle bootJar --no-daemon --parallel
# Runtime stage - Mac native
FROM eclipse-temurin:17-jre
# Mac에서 Ubuntu base이므로 apt-get 사용
RUN apt-get update && apt-get install -y curl tzdata && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
# 빌드된 JAR 파일 복사
COPY --from=build /app/build/libs/*.jar app.jar
# 한글 인코딩 환경변수 설정 (Mac 호환)
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV TZ=Asia/Seoul
# JVM 옵션 설정 (Mac에서 최적화)
ENV JAVA_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Seoul -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
# 헬스체크 (Mac Docker에서 안정성 향상)
HEALTHCHECK --interval=30s --timeout=15s --start-period=90s --retries=3 \
CMD curl -f http://localhost:8080/actuator/health || exit 1
EXPOSE 8080
# Mac에서 더 안정적인 실행
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar --spring.profiles.active=dev"]