# 1. Removed syntax=docker/dockerfile:1 to stop the initial 4-hour hang # 2. Pinned directly to an immutable SHA digest to stop Docker Hub tag-resolution hangs FROM python:3.12-slim-bookworm ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PYTHONPATH=/app \ UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy WORKDIR /app COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv # Create a non-privileged user that the app will run under. # See https://docs.docker.com/go/dockerfile-user-best-practices/ ARG UID=10001 RUN adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid "${UID}" \ appuser # Layer cache setup COPY pyproject.toml uv.lock ./ RUN uv sync --frozen --no-dev --no-install-project COPY . . # Writable cache for Hugging Face Hub RUN mkdir -p /app/.cache/huggingface && chown -R appuser:appuser /app USER appuser ENV PATH="/app/.venv/bin:$PATH" \ HOME=/app \ HF_HOME=/app/.cache/huggingface \ XDG_CACHE_HOME=/app/.cache # Expose the port that the application listens on. EXPOSE 7860 # Run the application. CMD uv run python app.py