3dai-backend / Dockerfile
maxjski's picture
deployment fix
f5d1a8b
# ---- 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"]