FROM python:3.13-slim-bookworm AS builder
RUN apt-get update && apt-get install -y --no-install-recommends binutils ca-certificates curl && rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir uv
WORKDIR /workspace
COPY pyproject.toml uv.lock README.md ./
COPY src src
COPY scripts/build-binaries.py scripts/vdl_entry.py scripts/vdl_mcp_entry.py scripts/
RUN uv sync --frozen --all-extras --group dev
# A prior-version fixture uses the same tested updater and distinct package metadata.
RUN uv version 2.1.1 && uv sync --all-extras --group dev && uv run python scripts/build-binaries.py --dist-dir /artifacts/2.1.1
RUN uv version 2.1.2 && uv sync --all-extras --group dev && uv run python scripts/build-binaries.py --dist-dir /artifacts/2.1.2

FROM denoland/deno:bin-2.6.3 AS deno

FROM debian:bookworm-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl tar gzip ffmpeg && rm -rf /var/lib/apt/lists/*
COPY --from=deno /deno /usr/local/bin/deno
COPY --from=builder /artifacts /artifacts
COPY scripts/install.sh /test/install.sh
COPY tests/docker/verify.py /test/verify.py
# Python is used only by the release test server, never to run the installed binaries.
FROM runtime AS test
RUN apt-get update && apt-get install -y --no-install-recommends python3 && rm -rf /var/lib/apt/lists/*
CMD ["python3", "/test/verify.py"]
