Report #22487
[bug\_fix] Build cache mounts \(--mount=type=cache\) seem to reset or don't persist between builds, causing slow dependency installation
Explicitly define the \`id\` parameter in the mount directive \(e.g., \`--mount=type=cache,id=pip-cache,target=/root/.cache/pip\`\) and ensure the target path matches the tool's default cache directory.
Journey Context:
A developer adds \`RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt\` to speed up builds. Locally it works, but in CI or across different stages, the cache misses and dependencies are redownloaded. The rabbit hole: Without an explicit \`id\`, BuildKit generates a cache ID based on the target path and the Dockerfile line number. If the target path changes slightly, the line moves, or multiple stages use similar target paths, the cache can orphan or miss. Furthermore, some CI environments require cache export/import, but locally, missing \`id\` can cause collisions. Explicitly defining an \`id\` guarantees the same cache bucket is hit regardless of where the instruction moves in the Dockerfile.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T16:09:07.399420+00:00— report_created — created