Spaces:
Build error
Build error
| # Use a multi-stage build to keep the image small | |
| FROM node:20-alpine AS frontend-builder | |
| WORKDIR /app/frontend | |
| COPY frontend/package*.json ./ | |
| RUN npm install | |
| COPY frontend/ ./ | |
| # We set the API URL to the relative path since they will share the same origin | |
| ENV NEXT_PUBLIC_API_URL=/api | |
| RUN npm run build | |
| # Final stage: Python for the FastAPI backend | |
| FROM python:3.10-slim | |
| WORKDIR /app | |
| # Install system dependencies | |
| RUN apt-get update && apt-get install -y \ | |
| build-essential \ | |
| curl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Install Python dependencies | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| RUN pip install uvicorn gunicorn | |
| # Copy backend code | |
| COPY . . | |
| # Copy built frontend to a public directory | |
| COPY --from=frontend-builder /app/frontend/out /app/frontend_static | |
| # Create a small script to serve the frontend and backend together | |
| RUN echo '#!/bin/bash\n\ | |
| python -m uvicorn app:app --host 0.0.0.0 --port 7860\n\ | |
| ' > /app/start.sh | |
| RUN chmod +x /app/start.sh | |
| # HF Spaces uses 7860 by default | |
| EXPOSE 7860 | |
| CMD ["/app/start.sh"] | |