53 lines
1.6 KiB
Docker
53 lines
1.6 KiB
Docker
# 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"] |