[Docker] Compile Python bytecode at image build time (#55422)

Signed-off-by: Nils Matteson <nilsmatteson@icloud.com> Co-authored-by: Simon Mo <simon.mo@hey.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

Nils Matteson committed Sep 30, 2026 at 19:20 UTC 76d3929916c6594c11924e9f91adbc69b90cbd35
8 files changed +9
docker/Dockerfile
+1
@@ -906,6 +906,7 @@ ENV UV_INDEX_STRATEGY="unsafe-best-match"
906 ENV UV_LINK_MODE=copy
907 ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
908 ENV UV_CACHE_DIR=/opt/uv/cache
909 +ENV UV_COMPILE_BYTECODE=1
910 RUN mkdir -p "${UV_PYTHON_INSTALL_DIR}" "${UV_CACHE_DIR}" \
911 && chgrp -R 0 /opt/uv \
912 && chmod -R g+rwX,a+rX /opt/uv
docker/Dockerfile.cpu
+2
@@ -138,6 +138,8 @@ ENV TARGETARCH=${TARGETARCH}
138 ######################### COMMON BASE IMAGE + PYTHON DEPS #########################
139 FROM base-common AS base-common-pydeps
140
141 +ENV UV_COMPILE_BYTECODE=1
142 +
143 # PyTorch provides its own indexes for standard and nightly builds.
144 # PYTORCH_NIGHTLY=1 builds the CPU image against torch nightly (parity with the
145 # GPU torch-nightly lane); default 0 keeps the pinned release CPU build.
docker/Dockerfile.ppc64le
+1
@@ -22,6 +22,7 @@ ENV HOME=/root \
22 RUSTUP_HOME=/root/.rustup \
23 UV_CACHE_DIR=$HOME/.cache/uv \
24 PATH=/root/.cargo/bin:/root/.rustup/bin:${VIRTUAL_ENV}/bin:$PATH
25 +ENV UV_COMPILE_BYTECODE=1
26
27 RUN echo "DEBUG: VLLM_VERSION=${VLLM_VERSION}"
28 RUN --mount=type=cache,target=/var/cache/dnf \
docker/Dockerfile.rock
+1
@@ -898,6 +898,7 @@ COPY --from=test_smoke /vllm-smoke-ok /
898 # -----------------------
899 # Final vLLM image
900 FROM mori_base AS final_common
901 +ENV UV_COMPILE_BYTECODE=1
902
903 RUN python3 -m pip install --upgrade pip && rm -rf /var/lib/apt/lists/*
904
docker/Dockerfile.rocm
+1
@@ -920,6 +920,7 @@ COPY --from=test_smoke /vllm-smoke-ok /
920 # -----------------------
921 # Final vLLM image
922 FROM mori_base AS final_common
923 +ENV UV_COMPILE_BYTECODE=1
924
925 RUN python3 -m pip install --upgrade pip && rm -rf /var/lib/apt/lists/*
926
docker/Dockerfile.rocm_gfx1250
+1
@@ -655,6 +655,7 @@ RUN mkdir src && mv vllm src/vllm
655 # -----------------------
656 # Final vLLM image
657 FROM mori_base AS final
658 +ENV UV_COMPILE_BYTECODE=1
659
660 RUN python3 -m pip install --upgrade pip && rm -rf /var/lib/apt/lists/*
661
docker/Dockerfile.s390x
+1
@@ -196,6 +196,7 @@ ARG PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu"
196 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"
197 ENV C_INCLUDE_PATH="/usr/local/include:$C_INCLUDE_PATH"
198 ENV UV_LINK_MODE=copy
199 +ENV UV_COMPILE_BYTECODE=1
200 ENV CARGO_HOME=/root/.cargo
201 ENV RUSTUP_HOME=/root/.rustup
202 ENV GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1
docker/Dockerfile.xpu
+1
@@ -205,6 +205,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
205 /tmp/ucx_source /tmp/nixl_source
206
207 FROM vllm-base AS vllm-openai
208 +ENV UV_COMPILE_BYTECODE=1
209
210 # Must match the ucx-nixl-build stage above: ARG does not cross stages, so a stale
211 # value here installs a meta package that disagrees with the wheel built there.