Files
rtgs/deploy/Dockerfile.backend
rtgs 0c29884780 feat(deploy): RTGS 3센터 컨테이너 배포 산출물
- Dockerfile.backend: 7서비스 공용 이미지(멀티스테이지 gradle 빌드, SERVICE env 선택, curl 포함)
- docker-compose.yml: PG(3DB)+Kafka+순번기+DC1/DC2/DC3 각6서비스+프론트, 컨테이너 격리로 포트오프셋 불필요, depends_on 헬스 순서
- Dockerfile.frontend+nginx.conf: 콘솔+DT 정적빌드→nginx 서빙+API 리버스프록시(X-RTGS-DC 헤더/dcN 경로 센터 라우팅)
- init/init-3centers.sql, .dockerignore, README(Coder 런북 + Coolify 어댑테이션/정책 경고)
- vite.config: 배포 빌드에 dt.html 엔트리 추가(콘솔+DT 한번에)

빌드/기동 검증은 Coder(podman)에서 — 로컬 PC는 Docker 미지원. 프론트 build·compose 구조는 로컬 정적 검증 완료.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 18:14:03 +09:00

32 lines
1.7 KiB
Docker

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