[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.