Spaces:
Sleeping
Sleeping
| # Stage 1: Build frontend | |
| FROM node:20-alpine AS frontend-builder | |
| WORKDIR /app | |
| COPY . . | |
| WORKDIR /app/playground/frontend | |
| RUN npm install | |
| RUN npm run build | |
| # Stage 2: Python runtime | |
| FROM python:3.11-slim | |
| # Set up a new user named "user" with user ID 1000 | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| ENV HOME=/home/user \ | |
| PATH=/home/user/.local/bin:$PATH | |
| WORKDIR $HOME/app | |
| # Install system dependencies (as root before switching user - done in base image effectively) | |
| # But we need to switch back to root to install system deps | |
| USER root | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| gcc \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Copy everything from root (requires build context to be set to root '.') | |
| COPY --chown=user . . | |
| # Install main package in editable mode | |
| # Switch to user for pip installs to avoid permission issues | |
| USER user | |
| RUN pip install --no-cache-dir --upgrade pip | |
| RUN pip install --no-cache-dir -e . | |
| # Install playground dependencies | |
| RUN pip install --no-cache-dir -r playground/requirements.txt | |
| RUN pip install --no-cache-dir groq huggingface_hub | |
| # Copy built frontend from stage 1 | |
| COPY --from=frontend-builder --chown=user /app/playground/frontend/dist $HOME/app/playground/frontend/dist | |
| # Set environment variables | |
| ENV PORT=7860 | |
| # Expose port 7860 (HuggingFace default) | |
| EXPOSE 7860 | |
| # Run server (relative to /home/user/app root) | |
| CMD ["python", "playground/server.py"] | |