Docker 镜像层顺序:把变化频率高的内容放后面

背景 只改一行业务代码却重新下载所有依赖,会让构建越来越慢。镜像层顺序应该围绕文件的变化频率安排。 核心判断 先复制依赖声明并下载依赖,再复制频繁变化的源码。 设置 WORKDIR,使用多阶段构建将工具链留在构建阶段。 观察缓存命中率,并定期验证没有缓存时也能构建。 最小示例 下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。 COPY go.mod go.sum ./ RUN go mod download COPY . . RUN go build -o /out/app ./cmd/app 边界与误区 片段是 Go 构建阶段的一部分;go.mod/go.sum 变化仍会失效依赖层。缓存只是加速手段,不能承担产物正确性的证明。 验证方式 分别只改源码、依赖和构建参数,比较构建日志与耗时;最后禁用缓存再构建一次,确认产物和测试结果一致。 小结 先复制依赖描述并安装,再复制源码,让缓存真正服务于日常开发和 CI。

2026年9月15日 · 1 分钟 · BvBeJ