FROM python:3.14-slim-bookworm@sha256:23c59390fc717bf09f9336908199a0ae75d9c4264bf296123f94ad772fea3b52 AS wheels ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_NO_CACHE_DIR=1 COPY requirements/python-runner.txt /tmp/requirements.txt RUN pip wheel --no-cache-dir --no-deps --wheel-dir /wheels -r /tmp/requirements.txt FROM python:3.14-slim-bookworm@sha256:23c59390fc717bf09f9336908199a0ae75d9c4264bf296123f94ad772fea3b52 ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PYTHONNOUSERSITE=1 \ MPLBACKEND=Agg \ PYTHON_RUNNER_QUEUE=/jobs RUN apt-get update && apt-get install -y --no-install-recommends \ libfreetype6 \ libjpeg62-turbo \ libopenblas0-pthread \ libpng16-16 \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* COPY --from=wheels /wheels /wheels COPY requirements/python-runner.txt /tmp/requirements.txt RUN pip install --no-cache-dir --no-index --no-deps /wheels/* \ && python -m pip uninstall -y pip setuptools wheel \ && rm -rf /wheels /tmp/requirements.txt /root/.cache /usr/local/bin/pip* WORKDIR /runner COPY python_runner/supervisor.py python_runner/healthcheck.py ./ RUN mkdir -p /jobs /tmp \ && chown 1001:1001 /jobs \ && chmod 700 /jobs \ && chmod 755 /runner/supervisor.py /runner/healthcheck.py USER 0:0 HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \ CMD ["python", "/runner/healthcheck.py"] CMD ["python", "/runner/supervisor.py"]