du -sh .git node_modules logs # .dockerignore .git node_modules logs
构建日志停在 `Sending build context to Docker daemon 1.82GB` 这一行十几分钟不动,可本机 du 出来整个项目只有两百兆,换台机器同样慢,本地磁盘也没报错。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,构建上下文是整个目录打包后传给 daemon,没有 .dockerignore 时 .git、运行日志、虚拟环境全都进包,每次构建白传几百兆,耗时全花在打包和传输上。
围绕「构建上下文过大」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
处理上按这个顺序:先量出实际上下文体积 找出多出来的到底是哪几个目录;补一份 .dockerignore 把版本库目录和依赖缓存都排除掉 别写宽泛通配;重建后看日志首行的上下文体积有没有降到几十兆。
改完只确认一件事:日志首行的 context 体积降到几十兆,本机再构建一次也不会超过一分钟。
