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