本地用 buildx + BuildKit 缓存很香,推到 GitHub Actions 后缓存基本不命中,每次都全量构建。
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v5
with:
cache-from: type=gha
cache-to: type=gha,mode=max
最后发现是:
cache-to的mode=max必须开,默认只缓存最终层。- GHA cache 有 10GB 上限,超了会丢老的。
- Dockerfile 里
COPY . .后立刻 RUN install,源码任何变动都让 install 层失效。
把 lockfile 单独 COPY 出来先装依赖,缓存命中率立刻上来。
大家 CI 缓存都怎么配?