碰到過問題:
docker build 執(zhí)行特別慢,甚至部分情況进胯,超過5分鐘酗失,業(yè)務吐槽脯宿!
概況
- node項目
- dockerd 本地打包構建
分析
通過分析Jenkins日志,發(fā)現(xiàn)docker build耗時主要發(fā)生在
Sending build context to Docker daemon
通過各大搜索引擎發(fā)現(xiàn)欢嘿,由于docker是CS架構,docker命令需要將構建的目標目錄的所有文件(.dockerignore除外)傳輸?shù)絛ockerd服務焙矛,即context楷怒。所以網(wǎng)上大致上都是:
- 將無用的目錄或文件添加到.dockerignore
2.單獨使用一個目錄將所需的文件以及Dockerfile放入其中
在進行構建
解決問題
但是碰到的情況是蛋勺,業(yè)務他需要將構建結束后的node_modules(超過1GB)通過COPY命令添加到鏡像中。
猜測并驗證:由于過多小文件導致Sending build context to Docker daemon慢
于是通過將文件打包成歸檔(壓縮)文件鸠删,通過ADD或者業(yè)務腳本來解壓文件