FROM ghcr.io/astral-sh/uv:0.8.17-python3.13-bookworm-slim@sha256:09151c62a5a5d6163d0f24d62d6b163e10c6134d730e018b1ea48e2fdb19bc37 AS builder

ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy

WORKDIR /app

# Install dependencies first (cached unless lockfile/pyproject changes)
COPY packages/lcmd-client/pyproject.toml packages/lcmd-client/uv.lock ./
RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --group docs --no-dev --frozen --no-install-project

# Copy source and install the project
COPY packages/lcmd-client/ .

RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --group docs --no-dev --frozen && \
    uv run --group docs python docs/generate_polars_inv.py && \
    uv run --group docs sphinx-build -b html docs/ docs/_build/

FROM nginx:alpine@sha256:7e89aa6cabfc80f566b1b77b981f4bb98413bd2d513ca9a30f63fe58b4af6903

# Patch OS packages on top of the pinned Alpine base — see comment in
# apps/backend/Dockerfile for the same pattern.
RUN apk upgrade --no-cache

COPY --from=builder /app/docs/_build/ /usr/share/nginx/html/docs/python/
EXPOSE 80
