Spaces:
Paused
Paused
| # ---- Base image ----------------------------------------------------------- | |
| FROM python:3.11-slim | |
| # Hugging Face passes the port to listen on via $PORT | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| PORT=7860 | |
| WORKDIR /code | |
| # ---- Install system dependencies for OpenGL/EGL (required for pyrender) ---- | |
| RUN apt-get update && apt-get install -y \ | |
| libgl1-mesa-glx \ | |
| libgl1-mesa-dri \ | |
| libglu1-mesa \ | |
| libegl1-mesa \ | |
| libgbm1 \ | |
| libxext6 \ | |
| libxrender1 \ | |
| libxfixes3 \ | |
| libxi6 \ | |
| libxrandr2 \ | |
| libxss1 \ | |
| libgtk-3-0 \ | |
| libgconf-2-4 \ | |
| xvfb \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Set environment variables for headless OpenGL rendering | |
| ENV DISPLAY=:99 | |
| ENV PYOPENGL_PLATFORM=egl | |
| # ---- Install Python deps -------------------------------------------------- | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # ---- Copy project code ---------------------------------------------------- | |
| COPY . . | |
| # ---- Create startup script ------------------------------------------------ | |
| RUN echo '#!/bin/bash\n\ | |
| set -e\n\ | |
| # Start virtual framebuffer for headless OpenGL\n\ | |
| Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &\n\ | |
| # Wait a moment for Xvfb to start\n\ | |
| sleep 2\n\ | |
| # Launch FastAPI app\n\ | |
| exec python main.py\n' > /code/start.sh && chmod +x /code/start.sh | |
| # ---- Start everything ----------------------------------------------------- | |
| CMD ["/code/start.sh"] |