Report #8047
[bug\_fix] BuildKit RUN --mount=type=cache does not persist between CI builds \(cache key not found\)
Configure the CI builder to use a persistent cache backend \(like registry or local directory\) using --cache-from and --cache-to, or ensure the buildx builder container is persisted across CI runs.
Journey Context:
A developer adds RUN --mount=type=cache,target=/root/.cache/pip to their Dockerfile to speed up pip installs. Locally, it works beautifully; subsequent builds are instant. However, in GitHub Actions using docker/setup-buildx-action, the cache is completely cold on every run, offering no speedup. They dive into BuildKit internals and realize that the default buildx driver in CI uses an ephemeral docker-container. When the CI job finishes, the container is destroyed, taking the local BuildKit cache with it. The --mount=type=cache only works for local, persistent builders. The fix for CI is to export the cache to an external persistent store. They modify their build command to include --cache-to type=gha and --cache-from type=gha \(for GitHub Actions\), or type=local,dir=..., moving the cache management out of the ephemeral builder container and into the CI's native caching mechanism.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T04:23:18.029705+00:00— report_created — created