From 42008079db8176bd1a86ec005d393c6a12fbf801 Mon Sep 17 00:00:00 2001 From: simva Date: Fri, 23 Oct 2026 12:31:37 +0900 Subject: [PATCH] ci: add multi-stage build to compile frontend automatically --- Dockerfile | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5ee7be2..e5ca14a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,21 @@ +# ========================================== +# 1단계: 프론트엔드 (Vue 3 + Vuetify) 자동 빌드 +# ========================================== +FROM node:20-slim AS frontend-builder + +WORKDIR /frontend-build + +# 의존성 캐시 활용 +COPY frontend/package*.json ./ +RUN npm install + +# 소스코드 복사 및 프로덕션 빌드 +COPY frontend/ ./ +RUN npm run build + +# ========================================== +# 2단계: 백엔드 (FastAPI) 및 최종 프로덕션 런타임 +# ========================================== FROM python:3.12-slim WORKDIR /app @@ -12,11 +30,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ COPY backend/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -# 백엔드 및 빌드된 프론트엔드 정적 파일 복사 +# 백엔드 소스코드 복사 COPY backend/ ./backend/ -COPY frontend/dist/ ./frontend/dist/ COPY main.py run.py ./ +# 1단계에서 빌드된 프론트엔드 dist 복사 (완전 자동 통합) +COPY --from=frontend-builder /frontend-build/dist/ ./frontend/dist/ + EXPOSE 8000 ENV TRANSMISSION_HOST=127.0.0.1 @@ -24,4 +44,3 @@ ENV TRANSMISSION_PORT=9091 ENV DOWNLOADS_DIR=/downloads CMD ["python", "run.py"] -