ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.11.7@sha256:240fb85ab0f263ef12f492d8476aa3a2e4e1e333f7d67fbdd923d00a506a516a FROM $UV_IMAGE AS uvbin FROM python:3.13-slim@sha256:739e7213785e88c0f702dcdc12c0973afcbd606dbf021a589cab77d6b00b579d WORKDIR /app # Copy the uv binary and the health check script. COPY --from=uvbin /uv /usr/local/bin/uv COPY pyproject.toml uv.lock /app/ COPY scripts/health_check/health_check_client.py /app/health_check_client.py # Resolve and install the health-check dependencies from the project lockfile # so the runtime image stays self-contained and reproducible. RUN uv export --frozen --no-default-groups --only-group healthcheck --no-emit-project --no-hashes --output-file /tmp/health-check-requirements.txt \ && uv pip install --system -r /tmp/health-check-requirements.txt \ && rm /tmp/health-check-requirements.txt \ && rm /app/pyproject.toml /app/uv.lock \ && chmod +x /app/health_check_client.py # Run as non-root user RUN groupadd --gid 1000 appuser && useradd --uid 1000 --gid 1000 --no-create-home appuser USER appuser # Health check HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ CMD ["python", "/app/health_check_client.py", "--help"] # Set entrypoint ENTRYPOINT ["python", "/app/health_check_client.py"]