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