-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
51 lines (47 loc) · 2.1 KB
/
Dockerfile
File metadata and controls
51 lines (47 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# syntax=docker/dockerfile:1.7-labs
ARG FRONTEND_BUILD_IMAGE=ireg.querypie.io/ci/deck-ci-frontend:latest
ARG BACKEND_BUILD_IMAGE=ireg.querypie.io/ci/deck-ci-backend:latest
ARG RUNTIME_BASE_IMAGE=ireg.querypie.io/ci/deck-runtime-base:latest
# ── Frontend Build ──
FROM --platform=$BUILDPLATFORM ${FRONTEND_BUILD_IMAGE} AS frontend
ARG SERVICE=app
WORKDIR /app
# 의존성 정의 복사 (캐시 레이어)
COPY frontend/package.json frontend/pnpm-lock.yaml frontend/pnpm-workspace.yaml frontend/
COPY frontend/patches/ frontend/patches/
COPY frontend/app/package.json frontend/app/package.json
COPY frontend/build-utils/package.json frontend/build-utils/package.json
COPY frontend/${SERVICE}/package.json frontend/${SERVICE}/package.json
# 의존성 설치 (lockfile 기준)
RUN pnpm --dir frontend install --frozen-lockfile
# 심링크 원본 복사 (.editorconfig → frontend workspace 패키지가 ../../.editorconfig 참조)
COPY .editorconfig /app/.editorconfig
# 소스 복사
COPY frontend/ frontend/
# 타입 체크 + Vite 빌드 (테스트는 CI에서 별도 수행)
# 서비스 스크립트를 통해 pretypecheck/prebuild 훅이 실행되도록 한다.
RUN pnpm --dir frontend --filter @deck/${SERVICE} typecheck && pnpm --dir frontend --filter @deck/${SERVICE} build
# ── Backend Build ──
FROM --platform=$BUILDPLATFORM ${BACKEND_BUILD_IMAGE} AS backend
ARG SERVICE=app
WORKDIR /workspace
# 백엔드 소스 복사
COPY backend/ .
# 프론트엔드 빌드 산출물 복사
COPY --from=frontend /app/backend/dist/${SERVICE}/src/main/resources/static dist/${SERVICE}/src/main/resources/static/
# Spring Boot JAR 빌드 (테스트/린트는 CI에서 별도 수행)
RUN ./gradlew :dist:${SERVICE}:bootJar --no-daemon -x test -x ktlintFormat
# ── Runtime ──
FROM ${RUNTIME_BASE_IMAGE}
ARG SERVICE=app
WORKDIR /app
# JAR 복사
COPY --from=backend /workspace/dist/${SERVICE}/build/libs/*.jar app.jar
# 포트 선언
EXPOSE 8011
# 환경변수
ENV SPRING_PROFILES_ACTIVE=prod
ENV SPRING_APPLICATION_NAME=${SERVICE}
ENV JAVA_OPTS="-Xms1g -Xmx2g"
# 앱 실행
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]