碰到过问题:
docker build 执行特别慢,甚至部分情况,超过5分钟,业务吐槽!
概况
- node项目
- dockerd 本地打包构建
分析
通过分析Jenkins日志,发现docker build耗时主要发生在
Sending build context to Docker daemon
通过各大搜索引擎发现,由于docker是CS架构,docker命令需要将构建的目标目录的所有文件(.dockerignore除外)传输到dockerd服务,即context。所以网上大致上都是:
- 将无用的目录或文件添加到.dockerignore
2.单独使用一个目录将所需的文件以及Dockerfile放入其中
在进行构建
解决问题
但是碰到的情况是,业务他需要将构建结束后的node_modules(超过1GB)通过COPY命令添加到镜像中。
猜测并验证:由于过多小文件导致Sending build context to Docker daemon慢
于是通过将文件打包成归档(压缩)文件,通过ADD或者业务脚本来解压文件