在 Docker 映像中复制 /node_modules 不是一个好主意吗?
Posted
技术标签:
【中文标题】在 Docker 映像中复制 /node_modules 不是一个好主意吗?【英文标题】:Is copying /node_modules inside a Docker image not a good idea? 【发布时间】:2018-06-15 11:20:13 【问题描述】:我在网上看到的大多数/所有示例通常将package.json
复制到图像中,然后在图像中运行npm install
。在构建服务器上不从外部运行npm install
,然后只复制包括node_modules/
文件夹在内的所有内容,是否存在破坏交易的原因?
我这样做的主要动机是,我们正在使用具有安全性的私有 npm 注册表,并从映像中运行 npm
,我们需要弄清楚如何安全地嵌入凭据。此外,我们正在使用纱线,如果纱线在构建服务器上运行,我们可以跨项目利用纱线缓存。我想这些都有解决方法,但是从已经设置好所有内容的构建服务器运行 yarn/npm 似乎非常方便。
谢谢
【问题讨论】:
【参考方案1】:那里的公共 Dockerfiles 试图提供通用的解决方案。
将依赖项编码为 package.json
可以只共享一个 Dockerfile
,而不依赖于任何不公开的内容。
但是在运行时 Docker 并不关心文件是如何到达容器的。所以这取决于你,你如何将所有需要的文件推送到你的容器中。
附:考虑分层。如果你复制node_modules/
下的东西,一步完成,只使用一层。
【讨论】:
感谢您的反馈,我可能应该提到这不是针对通用图像,而是针对特定应用程序。另外,感谢有关将 node_modules 放置到单独副本的提示。以上是关于在 Docker 映像中复制 /node_modules 不是一个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Docker 文件中的 COPY 将文件夹从 Windows 主机操作系统复制到 Docker 映像中
如何将文件夹从我的主机挂载到自定义 docker 映像,在目录中使用 Dockerfile 进行设置? [复制]
如何在我的 ubuntu docker 映像中安装“ifconfig”命令? [复制]