# RTGS 백엔드 공용 이미지 — 7개 서비스(sequencer/chanel/dior/hermes/prada/gucci/louisvuitton) 하나로.
# 실행 서비스는 SERVICE env로 선택. 포트/DB/센터/Kafka는 전부 env 주입(compose에서 지정).
# ── build: gradlew로 fat jar 빌드(JDK21). runtime: JRE + curl(헬스체크).

# ---------- build ----------
FROM eclipse-temurin:21-jdk AS build
WORKDIR /src
COPY backend/ ./
# 오프라인 캐시락 회피 위해 --no-build-cache. 의존성은 최초 1회 네트워크 다운로드.
RUN chmod +x gradlew && ./gradlew --no-daemon --no-build-cache \
      :sequencer:bootJar :chanel:bootJar :dior:bootJar :hermes:bootJar \
      :prada:bootJar :gucci:bootJar :louisvuitton:bootJar

# ---------- runtime ----------
FROM eclipse-temurin:21-jre AS runtime
WORKDIR /app
RUN apt-get update \
    && apt-get install -y --no-install-recommends curl ca-certificates \
    && rm -rf /var/lib/apt/lists/*
# 7개 fat jar를 /app/<svc>.jar 로 복사
COPY --from=build /src/sequencer/build/libs/sequencer-0.1.0.jar     /app/sequencer.jar
COPY --from=build /src/chanel/build/libs/chanel-0.1.0.jar           /app/chanel.jar
COPY --from=build /src/dior/build/libs/dior-0.1.0.jar               /app/dior.jar
COPY --from=build /src/hermes/build/libs/hermes-0.1.0.jar           /app/hermes.jar
COPY --from=build /src/prada/build/libs/prada-0.1.0.jar             /app/prada.jar
COPY --from=build /src/gucci/build/libs/gucci-0.1.0.jar             /app/gucci.jar
COPY --from=build /src/louisvuitton/build/libs/louisvuitton-0.1.0.jar /app/louisvuitton.jar

# SERVICE=chanel 등으로 실행 서비스 선택. SERVER_PORT는 Spring relaxed-binding으로 server.port에 매핑.
ENV SERVICE=chanel
ENTRYPOINT ["sh","-c","exec java -jar /app/${SERVICE}.jar"]
