Report #16174
[bug\_fix] exec format error during RUN step in multi-architecture build using --mount=type=cache
Scope the cache mount by architecture by adding an \`id\` parameter that includes the target architecture, such as \`--mount=type=cache,id=pip-$\(TARGETARCH\),target=/root/.cache/pip\`.
Journey Context:
A developer sets up a multi-architecture build using \`docker buildx build --platform linux/amd64,linux/arm64\`. They use \`RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt\` to speed up the build. The amd64 build succeeds, but the arm64 build fails with 'exec format error' when trying to run a compiled Python wheel from the cache. The developer realizes BuildKit shares the cache volume across both build instances by default. The amd64 build compiled and cached a binary, and the arm64 build pulled that amd64 binary and tried to execute it. Adding the \`id\` parameter works because it partitions the cache, ensuring the arm64 build only reads from the arm64-specific cache and doesn't cross-contaminate binaries.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T01:57:30.189494+00:00— report_created — created