Spaces:
Sleeping
Sleeping
| FROM python:3.11-slim | |
| # Basic env | |
| ENV DEBIAN_FRONTEND=noninteractive \ | |
| PYTHONUNBUFFERED=1 \ | |
| PYTHONDONTWRITEBYTECODE=1 \ | |
| HOME=/home/user \ | |
| PATH=/home/user/.local/bin:$PATH \ | |
| PYVISTA_OFF_SCREEN=true \ | |
| DISPLAY=:99 \ | |
| VTK_SILENCE_GET_VOID_POINTER_WARNINGS=1 | |
| # System deps for headless VTK/PyVista + Xvfb | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential cmake wget xvfb \ | |
| libosmesa6 libosmesa6-dev \ | |
| libgl1 libgl1-mesa-dev \ | |
| libegl1 libegl1-mesa-dev \ | |
| libglu1-mesa libglu1-mesa-dev \ | |
| libgles2-mesa-dev \ | |
| libx11-6 libxt6 libxrender1 libsm6 libice6 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Non-root user | |
| RUN useradd -m -u 1000 user | |
| WORKDIR /home/user/app | |
| # Python deps (cached) | |
| COPY requirements.txt . | |
| RUN python3 -m pip install --upgrade pip setuptools wheel \ | |
| && python3 -m pip install --no-cache-dir -r requirements.txt | |
| # App code | |
| COPY --chown=user:user . . | |
| USER user | |
| # HF expects service on $PORT (usually 7860) | |
| EXPOSE 7860 | |
| # Optional: don’t override PORT; just ensure host is external | |
| ENV APP_HOST=0.0.0.0 | |
| # Healthcheck on the expected port | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ | |
| CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:${PORT:-7860}/ || exit 1 | |
| # Start Xvfb + run the app as PID1 | |
| CMD ["sh", "-c", "Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 & exec python3 app.py"] | |