From 76d3929916c6594c11924e9f91adbc69b90cbd35 Mon Sep 17 00:00:00 2001 From: Nils Matteson Date: Wed, 30 Sep 2026 19:20:17 -0700 Subject: [PATCH] [Docker] Compile Python bytecode at image build time (#55422) Signed-off-by: Nils Matteson Co-authored-by: Simon Mo Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- docker/Dockerfile | 1 + docker/Dockerfile.cpu | 2 ++ docker/Dockerfile.ppc64le | 1 + docker/Dockerfile.rock | 1 + docker/Dockerfile.rocm | 1 + docker/Dockerfile.rocm_gfx1250 | 1 + docker/Dockerfile.s390x | 1 + docker/Dockerfile.xpu | 1 + 8 files changed, 9 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index ba046adae1..7dfcd61b9e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -906,6 +906,7 @@ ENV UV_INDEX_STRATEGY="unsafe-best-match" ENV UV_LINK_MODE=copy ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python ENV UV_CACHE_DIR=/opt/uv/cache +ENV UV_COMPILE_BYTECODE=1 RUN mkdir -p "${UV_PYTHON_INSTALL_DIR}" "${UV_CACHE_DIR}" \ && chgrp -R 0 /opt/uv \ && chmod -R g+rwX,a+rX /opt/uv diff --git a/docker/Dockerfile.cpu b/docker/Dockerfile.cpu index ed5dfa5d24..f61752475d 100644 --- a/docker/Dockerfile.cpu +++ b/docker/Dockerfile.cpu @@ -138,6 +138,8 @@ ENV TARGETARCH=${TARGETARCH} ######################### COMMON BASE IMAGE + PYTHON DEPS ######################### FROM base-common AS base-common-pydeps +ENV UV_COMPILE_BYTECODE=1 + # PyTorch provides its own indexes for standard and nightly builds. # PYTORCH_NIGHTLY=1 builds the CPU image against torch nightly (parity with the # GPU torch-nightly lane); default 0 keeps the pinned release CPU build. diff --git a/docker/Dockerfile.ppc64le b/docker/Dockerfile.ppc64le index 1bb08591ca..68e6ab9563 100644 --- a/docker/Dockerfile.ppc64le +++ b/docker/Dockerfile.ppc64le @@ -22,6 +22,7 @@ ENV HOME=/root \ RUSTUP_HOME=/root/.rustup \ UV_CACHE_DIR=$HOME/.cache/uv \ PATH=/root/.cargo/bin:/root/.rustup/bin:${VIRTUAL_ENV}/bin:$PATH +ENV UV_COMPILE_BYTECODE=1 RUN echo "DEBUG: VLLM_VERSION=${VLLM_VERSION}" RUN --mount=type=cache,target=/var/cache/dnf \ diff --git a/docker/Dockerfile.rock b/docker/Dockerfile.rock index afeac31742..e478d8e5a9 100644 --- a/docker/Dockerfile.rock +++ b/docker/Dockerfile.rock @@ -898,6 +898,7 @@ COPY --from=test_smoke /vllm-smoke-ok / # ----------------------- # Final vLLM image FROM mori_base AS final_common +ENV UV_COMPILE_BYTECODE=1 RUN python3 -m pip install --upgrade pip && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.rocm b/docker/Dockerfile.rocm index 74b007e5e7..8ba942346b 100644 --- a/docker/Dockerfile.rocm +++ b/docker/Dockerfile.rocm @@ -920,6 +920,7 @@ COPY --from=test_smoke /vllm-smoke-ok / # ----------------------- # Final vLLM image FROM mori_base AS final_common +ENV UV_COMPILE_BYTECODE=1 RUN python3 -m pip install --upgrade pip && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.rocm_gfx1250 b/docker/Dockerfile.rocm_gfx1250 index ac6dcdff0a..0609c73c04 100644 --- a/docker/Dockerfile.rocm_gfx1250 +++ b/docker/Dockerfile.rocm_gfx1250 @@ -655,6 +655,7 @@ RUN mkdir src && mv vllm src/vllm # ----------------------- # Final vLLM image FROM mori_base AS final +ENV UV_COMPILE_BYTECODE=1 RUN python3 -m pip install --upgrade pip && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.s390x b/docker/Dockerfile.s390x index 06be3ad523..e04ff55ce6 100644 --- a/docker/Dockerfile.s390x +++ b/docker/Dockerfile.s390x @@ -196,6 +196,7 @@ ARG PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu" ENV LD_LIBRARY_PATH="/opt/vllm/lib64/python${PYTHON_VERSION}/site-packages/torch/lib:/usr/local/lib:/opt/rh/gcc-toolset-14/root/usr/lib64:$LD_LIBRARY_PATH" ENV C_INCLUDE_PATH="/usr/local/include:$C_INCLUDE_PATH" ENV UV_LINK_MODE=copy +ENV UV_COMPILE_BYTECODE=1 ENV CARGO_HOME=/root/.cargo ENV RUSTUP_HOME=/root/.rustup ENV GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 diff --git a/docker/Dockerfile.xpu b/docker/Dockerfile.xpu index 9a33f6ba38..ada261dd8f 100644 --- a/docker/Dockerfile.xpu +++ b/docker/Dockerfile.xpu @@ -205,6 +205,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \ /tmp/ucx_source /tmp/nixl_source FROM vllm-base AS vllm-openai +ENV UV_COMPILE_BYTECODE=1 # Must match the ucx-nixl-build stage above: ARG does not cross stages, so a stale # value here installs a meta package that disagrees with the wheel built there.