Layers
Reuse an instruction when BuildKit finds matching inputs.
Keep layer reuse across builds. When an instruction runs again, selected cache mounts and compiler caches can preserve useful work inside it.
Start with shared Docker layer cache.
.boringcache.toml
workspace = "my-org/app" [adapters.docker] tag = "docker-cache" command = ["docker", "buildx", "build", "."]
boringcache docker
permissions: contents: read id-token: write steps: - uses: boringcache/one@f0fb9b2d926a32b10c543e92093ba00c5a291b79 # v1.33.0 with: mode: docker trust-policy: auto
steps: - label: Build command: > boringcache ci run --oidc-provider buildkite -- boringcache docker
build: timeout: 1h id_tokens: BORINGCACHE_OIDC_TOKEN: aud: urn:boringcache:workload script: - boringcache ci run --oidc-provider gitlab -- boringcache docker
Reuse an instruction when BuildKit finds matching inputs.
Opt in to persistent mounts for downloads and build directories.
Add native tool caching for eligible work inside a rebuilding layer.
The adapter connects your Buildx command to the managed BuildKit backend. BuildKit still decides layer reuse, and your existing runner still runs the build.
See cache reads and transfers for each Docker build.
Explore the workspace →GitHub Actionsmainddd4bf7
98.3%
113 of 115 cache reads were hits.
2.9×
Mastodon · compiler and package caches vs. caching disabled
36%
Immich · full cache vs. GHCR layer cache
Give consumers restore access and publishers a separate permission. Connect supported CI through OIDC or use scoped credentials.
Connect your CI →Separate readers and publishers
Install the CLI. Run onboarding to connect your repository and configure your cache.
30 GB of cache free. No credit card required.
curl -sSL https://install.boringcache.com/install.sh | sh
boringcache onboard
boringcache docker
We use cookies to understand how people use BoringCache. Learn more