网易首页 > 网易号 > 正文 申请入驻

你写的Dockerfile正在偷偷拖慢整个团队

0
分享至

  凌晨两点,CI流水线又挂了。构建日志里全是npm install的进度条,而你只改了一行注释。

  问题不在网络,在你的Dockerfile顺序。

  

  镜像不是文件,是千层饼

  多数人以为docker build是在"编译应用",其实是在叠文件系统快照。

  每个指令生成一层:FROM打底、RUN拍快照、COPY塞文件、ENV写元数据。这些层只读、用SHA256寻址、能被别的镜像复用。

  关键设计:层一旦写好,永不修改。改了就叠新层,旧层原地不动。

  这是Docker快的核心,也是你构建慢的元凶。

  缓存失效的残酷法则

  Docker有一条铁律:某层变了,它上面所有层全部作废。

  看看这个经典反例:

  FROM node:20COPY . . # 代码天天变RUN npm install # 被迫每次都跑

  代码一动,依赖重装。团队越大,浪费越惊人。

  调个顺序,世界清静:

  FROM node:20COPY package*.json ./ # 很少变RUN npm install # 大多时候直接命中缓存COPY . .

  口诀:稳的放上面,变的沉底。

  多阶段构建:把垃圾留在门外

  编译工具、测试依赖、源码——这些不该出现在生产镜像里。

  BuildKit的做法是分阶段:

  # 构建阶段FROM node:20 AS builderWORKDIR /appCOPY package*.json ./RUN npm installCOPY . .RUN npm run build# 生产阶段FROM node:20-alpineWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/node_modules ./node_modulesCMD ["node", "dist/server.js"]

  最终镜像只有dist和node_modules,builder阶段的一切都被丢弃。

  体积更小、攻击面更小、部署更快。

  BuildKit:现在已经是默认答案

  老构建器逐行执行,BuildKit能并行、能缓存挂载、能按需加载。

  启用方式:

  DOCKER_BUILDKIT=1 docker build .

  新版本Docker已默认开启,但老旧CI环境可能还在用 legacy builder。

  排查慢构建,先确认引擎版本。

  调试三板斧

  构建慢?检查指令顺序,把稳定依赖往上挪。

  缓存诡异失效?docker build --no-cache强制重来,排除干扰。

  镜像膨胀?多阶段配合.dockerignore,把不需要的文件挡在构建上下文外。

  想看底层细节?docker build --progress=plain .会暴露每一层的实际执行。

  文件系统怎么"叠"起来的

  Docker用联合文件系统(Union File System,比如OverlayFS)合并各层。

  底层只读,顶层可写。你看到的是完整文件系统,内部是多层叠加。

  读文件时从上往下找,写文件时复制到顶层再修改(写时复制机制)。

  这种设计让镜像分发极高效:相同层只传一次,本地直接复用。

  你的Dockerfile是性能蓝图

  它不是命令清单,是缓存策略的具象化表达。

  层序决定速度,阶段决定体积,上下文决定可重复性。

  团队里第一个搞懂这套的人,通常会成为"那个优化构建的"。

  下次写Dockerfile前,先画个依赖变更频率图——最静的放最上,最躁的沉到底。你的CI账单会感谢你。

  你们团队的构建时间目前是多少?有没有试过把package.json单独COPY一层后,缓存命中率变化有多大?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
52岁朴树近况:无儿无女,没钱没房,成了要钱不要命的“疯子”

52岁朴树近况:无儿无女,没钱没房,成了要钱不要命的“疯子”

流云随风去远方
2026-04-14 12:22:59
四川凌晨追打事件后续:6人全被带走,女子动手袭警细节曝光

四川凌晨追打事件后续:6人全被带走,女子动手袭警细节曝光

科学发掘
2026-05-12 18:44:40
记者:拉姆斯代尔沦为纽卡替补,阿尔特塔当年的魄力得到回报

记者:拉姆斯代尔沦为纽卡替补,阿尔特塔当年的魄力得到回报

懂球帝
2026-05-12 17:29:13
多名家长反映成都又一幼儿园将闭园 教育局回应

多名家长反映成都又一幼儿园将闭园 教育局回应

天府观察
2026-05-11 15:59:43
大快人心!国家出手擒下3名华人首富,他们干的事,根本不能饶恕

大快人心!国家出手擒下3名华人首富,他们干的事,根本不能饶恕

墨印斋
2026-03-24 21:34:56
国乒亚运名单巨变传四大信号!男队取消选拔推新人,樊振东留机会

国乒亚运名单巨变传四大信号!男队取消选拔推新人,樊振东留机会

铿锵格斗
2026-05-13 00:45:44
维生素B12立大功!研究发现:老人吃维生素B12,或能缓解5慢性病

维生素B12立大功!研究发现:老人吃维生素B12,或能缓解5慢性病

健康之光
2026-05-11 13:33:31
别信国外赚大钱

别信国外赚大钱

求实处
2026-05-11 23:13:00
痛心!青海17岁女生遗体已找到,凌晨复印试卷家长无视让人意难平

痛心!青海17岁女生遗体已找到,凌晨复印试卷家长无视让人意难平

社会日日鲜
2026-05-12 08:03:00
“6月6日即将闭店”?武汉宜家回应

“6月6日即将闭店”?武汉宜家回应

王二哥老搞笑
2026-05-12 19:05:19
长期走路能把五类病走没?医生建议:70岁后这样动,降低生病风险

长期走路能把五类病走没?医生建议:70岁后这样动,降低生病风险

39健康网
2026-05-11 18:31:48
耿同学让多所高校瑟瑟发抖,学术不端层出不穷!打假究竟要靠谁

耿同学让多所高校瑟瑟发抖,学术不端层出不穷!打假究竟要靠谁

平老师666
2026-05-12 22:41:22
俄罗斯无人机核心负责人科扎连科被捕!曾亲自向普京汇报

俄罗斯无人机核心负责人科扎连科被捕!曾亲自向普京汇报

项鹏飞
2026-05-11 20:08:25
你见过最离谱的网购是什么?网友:仓库是不会承认自己发错了的

你见过最离谱的网购是什么?网友:仓库是不会承认自己发错了的

另子维爱读史
2026-02-16 20:35:50
市监局回应女子用烧烤铁签喂狗:店主已主动停业整顿,正在做全面消杀,张贴禁止宠物入内告示

市监局回应女子用烧烤铁签喂狗:店主已主动停业整顿,正在做全面消杀,张贴禁止宠物入内告示

极目新闻
2026-05-12 15:54:06
记录报:穆帅现身里斯本机场准备去伦敦,M-席尔瓦也在同航班

记录报:穆帅现身里斯本机场准备去伦敦,M-席尔瓦也在同航班

懂球帝
2026-05-12 23:56:14
小学生吃早餐视频火了,116万网友点赞:这就是有父母兜底的幸福

小学生吃早餐视频火了,116万网友点赞:这就是有父母兜底的幸福

妍妍教育日记
2025-12-18 20:23:32
没有副作用,又不会上瘾的安眠药,你知道有哪些吗?

没有副作用,又不会上瘾的安眠药,你知道有哪些吗?

岐黄传人孙大夫
2026-04-21 11:30:03
丘成桐:很多人心目中的天赋都是假的

丘成桐:很多人心目中的天赋都是假的

尚曦读史
2026-05-02 09:19:04
东风 - 31 泄密大案:总工程师被美色策反,国之重器险遭灭顶之灾

东风 - 31 泄密大案:总工程师被美色策反,国之重器险遭灭顶之灾

干史人
2026-04-18 13:44:12
2026-05-13 02:32:49
像素与芯片
像素与芯片
有态度网友ytd
3676文章数 24关注度
往期回顾 全部

科技要闻

宇树发布载人变形机甲,定价390万元起

头条要闻

特朗普称将同中方讨论对台军售和黎智英案 外交部回应

头条要闻

特朗普称将同中方讨论对台军售和黎智英案 外交部回应

体育要闻

骑士终于玩明白了?

娱乐要闻

白鹿风波升级!掉粉20万评论区沦陷

财经要闻

利润再腰斩 京东干外卖后就没过过好日子

汽车要闻

吉利银河“TT”申报图曝光 电动尾翼+激光雷达

态度原创

亲子
房产
教育
时尚
游戏

亲子要闻

有点东西。周宁运动空间

房产要闻

穗八条引爆楼市!万博宝藏红盘,五一劲销出圈

教育要闻

求求你试试「5+1+1」学习法!!!

普通人真该学学如何穿搭!多穿裙子比裤子更时髦,大方提气质

活久见!电棍与香锅怒喷被撸圈开除后和解,祝Mlxg母亲节日快乐

无障碍浏览 进入关怀版