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"] |