Spaces:
Sleeping
Sleeping
| # ---- Stage 1: Build the Next.js Frontend ---- | |
| # Use a Node.js image to build our static frontend assets | |
| FROM node:18-slim as frontend-builder | |
| WORKDIR /app | |
| # Copy only the frontend folder contents | |
| COPY frontend/ ./ | |
| # Install dependencies and build the static site | |
| RUN npm install | |
| RUN npm run build | |
| # ---- Stage 2: Build the final Python Application ---- | |
| # Use a Python image for the FastAPI backend | |
| FROM python:3.10-slim | |
| WORKDIR /app | |
| # Copy Python requirements first for better caching | |
| COPY backend/requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Copy the entire backend code | |
| COPY backend/ . | |
| # Copy the built frontend static files from the 'frontend-builder' stage | |
| # The 'next build' command with 'output: export' places files in the 'out' directory | |
| COPY --from=frontend-builder /app/out ./static | |
| # Expose the port the app will run on | |
| EXPOSE 7860 | |
| # Command to run the Uvicorn server | |
| # Hugging Face Spaces expects the app to run on port 7860 | |
| CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] |