少啰嗦,先看代码package.json{"name":"xxx","version":"0.0.0","private":true,"scripts":{"start":"node./bin/www","forever":"node_modules/forever/bin/foreverbin/www"},"dependencies":{"async":"0.9.0","body-parser":"1.13.2","compression”:“1.6.2”,“config”:“1.12.0”,“connect-multiparty”:“2.0.0”,“cookie-parser”:“1.3.5”,“debug”:“2.2.0","ejs":"2.3.3","express":"4.13.1","forever":"0.15.3","http-proxy-middleware":"0.17.3","log4js":"0.6.24","serve-favicon":"2.3.0"}}dockerfileFROMhub.c.163.com/lightingfire/nodejs:6.9.1-alpineWORKDIR/appCOPYpackage.json/appRUNnpmi--registryhttps://registry.npm.taobao.org&&npmcachecleanCOPY。/appEXPOSE8086CMDnpmrunforever分析原理使用alpine的nodejs镜像,显着减小nodejs镜像的大小使用npmcacheclean命令清除npm缓存,减少npm包再次占用的时间将npmi和npmchacheclean一起写到减少构建层数使用淘宝npm源显着提升npm包下载速度daemonforever通过npm运行node_module中的包,避免安装forever单独copypacka耗时ge运行npmi拷贝./app,这个序列可以充分利用镜像缓存修改后通过jenkins打包时间比之前参考的HowtowriteexcellentDockerfiles缩短了10分钟到7.4秒
