将dockerized node.js发布到生产时, 发布包含开发依赖关系的镜像是否正确?如何删除生产Docker镜像中的开发依赖关系
我不是在谈论发展依赖 不在packages.json列出的devDependencies
,我的意思是海湾合作委员会,蟒蛇,节点GYP,一些其他的* -dev包,包含一系列的头,静态库的。 所有这些都需要编译一些节点依赖关系(如node-sass)
一个想法可能是两个阶段的构建,一个包含所有* -dev依赖关系的图像,在那里构建东西,然后将结果导出到另一个只有二进制文件的新图像。
- 优点:最终的“生产”形象小
- 缺点:没有标准的方式来构建图像
一般来说,任何编译sofware我想在泊坞窗图像分发,不应含有用于构建二进制文件的编译器,头文件和工具。
'运送包含开发依赖项的图像是否正确? 我不是在谈论发展依赖'大声笑 – Conan
这就是为什么括号解释我所指的是什么发展依赖关系,但是,大声笑 – Cesar
另请参阅https://www.dajobe.org/blog/2015/04/ 18/making-debian-docker-images-smaller/and http://blog.xebia.com/how-to-create-the-smallest-possible-docker-container-of-any-image/ – user2915097