# ========================================== # Stage 1: Next.js 정적 리소스 빌드 # ========================================== FROM node:20-alpine AS frontend-builder WORKDIR /app/frontend # 의존성 복사 및 설치 COPY frontend/package*.json ./ RUN npm ci # 소스코드 복사 및 정적 빌드 실행 (out/ 폴더 생성) COPY frontend/ ./ RUN npm run build # ========================================== # Stage 2: FastAPI 실행 및 통합 서빙 # ========================================== FROM python:3.11-slim WORKDIR /app # 시스템 의존성 설치 (필요시) RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ && rm -rf /var/lib/apt/lists/* # 파이썬 의존성 복사 및 설치 COPY backend/requirements.txt ./backend/ RUN pip install --no-cache-dir -r backend/requirements.txt # 소스코드 복사 COPY backend/ ./backend/ # 빌드된 프론트엔드 리소스 가져오기 COPY --from=frontend-builder /app/frontend/out ./frontend/out # Hugging Face Spaces 기본 포트는 7860입니다. EXPOSE 7860 # FastAPI 및 Uvicorn 실행 CMD ["uvicorn", "backend.app.main:app", "--host", "0.0.0.0", "--port", "7860"]