Spaces:
Running
Running
| # 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 |