繁体   English   中英

如何避免Windows主机上的Docker中运行的npm出现符号链接问题?

[英]How can avoid symlink problems with npm running in Docker on a Windows host?

我正在Windows 10上使用最新的Docker公共beta

我正在开发Node.js应用程序,并且正在使用Docker,并将src目录作为卷安装在容器中。

我无法从容器内部运行npm install ,因为它将导致创建符号链接(在node_modules目录中),如果主机是Windows,则显然在卷中不支持该符号链接。

有什么我可以解决的问题吗?

我在Linux环境中运行它没有任何问题。

经过一番研究,我发现许多涉及Virtualbox的解决方案,都用于Docker的“旧”版本(Docker Toolbox)。

我以以下方式解决了。

在此示例中,我将使用/usr/src作为要安装到容器中的目录:

  1. 将应用程序的src目录挂载在/usr/src-v /path/to/src:/usr/src
  2. 定义node_modules的数据量: -v /usr/src/node_modules

这样,您就可以将/path/to/src挂载到/usr/src并将/usr/src/node_modules挂载为数据卷。

最终结果是,即使在主机上创建了一个node_modules目录,它也将保持为空。

该解决方案利用了Docker Data Volumes

每当您希望避免已挂载目录的子目录中的更改反映在主机上时,这都是适用的,而不仅node_modules

为了避免NPM出现symlink错误,可以使用以下命令:

npm install --no-bin-links

但是,为了绝对避免symlink问题,您不应在已挂载目录(从Window挂载)中设置nodejs项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM