# 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"]