Spaces:
Sleeping
Sleeping
| # Runtime image for HF Spaces (Docker SDK, cpu-basic) and GHCR. | |
| # Heavy ML deps (torch, transformers) are deliberately absent until M1, | |
| # and training deps never enter this image (see docs/adr/0001). | |
| FROM python:3.12-slim-bookworm | |
| # uv — pinned to the same version as local dev | |
| COPY --from=ghcr.io/astral-sh/uv:0.11.20 /uv /uvx /bin/ | |
| ENV UV_COMPILE_BYTECODE=1 \ | |
| UV_LINK_MODE=copy \ | |
| UV_PYTHON_DOWNLOADS=never \ | |
| PYTHONUNBUFFERED=1 | |
| # Non-root user with uid 1000 (Hugging Face Spaces requirement) | |
| RUN useradd -m -u 1000 app | |
| WORKDIR /app | |
| # Layer 1: dependencies only (cached as long as pyproject/uv.lock don't change) | |
| COPY pyproject.toml uv.lock ./ | |
| RUN uv sync --frozen --no-install-project --no-dev | |
| # Layer 2: project code | |
| COPY README.md ./ | |
| COPY src ./src | |
| RUN uv sync --frozen --no-dev && chown -R app:app /app | |
| USER app | |
| ENV PATH="/app/.venv/bin:$PATH" | |
| EXPOSE 7860 | |
| CMD ["python", "-m", "tutor.app.main"] | |