# ========================================== # 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 # 7z 압축 해제 도구 설치 RUN apt-get update && apt-get install -y --no-install-recommends \ p7zip-full \ curl \ && rm -rf /var/lib/apt/lists/* # 파이썬 의존성 설치 COPY backend/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 백엔드 소스코드 복사 COPY backend/ ./backend/ 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 ENV TRANSMISSION_PORT=9091 ENV DOWNLOADS_DIR=/downloads CMD ["python", "run.py"]