在 Docker 图像中复制 /node_modules 不是一个好主意吗?

Is copying /node_modules inside a Docker image not a good idea?

Most/all我在网上看到的例子一般都是复制package.json到图片里面,然后运行npm install复制到图片里面。是否存在不从构建服务器外部 运行ning npm install 然后复制所有内容(包括 node_modules/ 文件夹)的交易破坏因素?

我这样做的主要动机是,我们使用私有 npm 注册表,具有安全性,并且 运行ning npm 来自图像,我们需要弄清楚如何安全地嵌入凭据。此外,我们正在使用 yarn,如果构建服务器上有 yarn 运行s,我们可以跨项目利用 yarn 缓存。我想这些是有解决方法的,但是 运行ning yarn/npm 从已经设置好所有内容的构建服务器似乎非常方便。

谢谢

Public Docker 文件试图提供通用解决方案。 将依赖项编码为 package.json 使得仅共享一个 Dockerfile 而不依赖任何 public 不可用的东西成为可能。

但是在运行时 Docker 并不关心文件是如何到达容器的。所以这取决于你如何将所有需要的文件推送到你的容器。

P.S。考虑分层。如果你复制node_modules/下的东西,一步完成,因为只使用一层。