quantum / Dockerfile
Apurva Tiwari
port: no multiple retries
c620ab3
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"]