Files
Macbook bd6094f71f 백엔드 Docker 빌드 실패로 배포가 막히던 문제를 수정한다.
테스트 컴파일 오류(RsiThresholdCrossSignalTest)와 -DskipTests 한계를 해결해
StrategyConditionThresholdNormalizer가 실제 서버 이미지에 포함되도록 한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 00:30:10 +09:00

45 lines
2.1 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 -Dmaven.test.skip=true -q
# ── 2단계: 실행 ──────────────────────────────────────────────────────────────
FROM eclipse-temurin:21-jre-alpine AS production
WORKDIR /app
ENV TZ=Asia/Seoul
RUN addgroup -S spring && adduser -S spring -G spring \
&& apk add --no-cache su-exec tzdata \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone
COPY --from=builder /build/backend/target/goldenchart-backend-*.jar app.jar
COPY backend/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
EXPOSE 8080
ENTRYPOINT ["/docker-entrypoint.sh"]