Files
goldenChart/backend/Dockerfile
T
2026-05-23 15:11:48 +09:00

43 lines
2.0 KiB
Docker

# ── 1단계: 빌드 ──────────────────────────────────────────────────────────────
# ta4j-master 는 Java 25 기준으로 빌드되어 있으므로 Java 25 이미지 사용
FROM maven:3.9-eclipse-temurin-21 AS builder
WORKDIR /build
# ── ta4j-master 전체 복사 (라이선스 헤더 파일 등 상대경로 유지) ─────────────
COPY ta4j-master ./ta4j-master
# 공통 skip 옵션 + 컴파일러 버전을 21로 강제 오버라이드
ARG SKIP_OPTS="-Denforcer.skip=true -Dlicense.skip=true -Dcheckstyle.skip=true -Dspotbugs.skip=true -DskipTests -Dmaven.compiler.release=21"
# 부모 POM 설치 (-N: 하위 모듈 빌드 생략)
RUN mvn -f ta4j-master/pom.xml -N install $SKIP_OPTS -q
# ta4j-core 만 빌드하여 로컬 리포지터리에 설치
RUN mvn -f ta4j-master/ta4j-core/pom.xml install $SKIP_OPTS -q
# ── Backend 빌드 ─────────────────────────────────────────────────────────────
# 의존성 레이어 캐시 (pom.xml 변경 시만 재다운로드)
COPY backend/pom.xml ./backend/pom.xml
RUN mvn -f backend/pom.xml dependency:go-offline -q 2>/dev/null || true
# 소스 빌드
COPY backend/src ./backend/src
RUN mvn -f backend/pom.xml package -DskipTests -q
# ── 2단계: 실행 ──────────────────────────────────────────────────────────────
FROM eclipse-temurin:21-jre-alpine AS production
WORKDIR /app
RUN addgroup -S spring && adduser -S spring -G spring
USER spring
COPY --from=builder /build/backend/target/goldenchart-backend-*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", \
"-XX:+UseContainerSupport", \
"-XX:MaxRAMPercentage=75.0", \
"-Djava.security.egd=file:/dev/./urandom", \
"-jar", "app.jar"]