← 中文资源

简体中文版本

用 BuildKit 缓存加速 Docker 构建

按从稳定到易变排序分层、为依赖安装挂载缓存,并在 CI 中导出导入构建缓存,使重建复用成果。

阅读英文原文

概述

每次 CI 都从头安装依赖,是因为缓存未持久化、分层顺序又让任何改动都使前层失效。把锁文件前置、用缓存挂载保存包管理器下载,并在 CI 导出导入缓存,可把大部分重复工作省去。

关键步骤

  1. 先复制锁文件并安装依赖,再复制源码。
  2. 为包管理器使用缓存挂载。
  3. 在 CI 中导出与导入构建缓存。
  4. 验证无改动时第二次构建复用缓存层。

验证

  • 代码改动不使依赖层失效。
  • 重建可复用远端缓存。
  • 下载的包在构建间保留。
  • 最终镜像体积由多阶段构建控制。

注意事项

  • BuildKit 缓存并非所有后端都通用,且基础镜像变化会使其失效。
  • 激进缓存可能掩盖过期依赖,发布前应干净重建一次。

适用范围

本条目围绕「用 BuildKit 缓存加速 Docker 构建」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

# syntax=docker/dockerfile:1.6
FROM node:22-slim AS deps
COPY package.json pnpm-lock.yaml ./
RUN --mount=type=cache,target=/root/.local/share/pnpm/store \
    pnpm install --frozen-lockfile
FROM node:22-slim
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm build