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

我在Windows 10上使用最新的Docker公共testing版 。

我正在开发一个Node.js应用程序,我正在使用Docker与我的src目录作为一个卷装入一个容器中。

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

有什么我可以做的解决这个问题?

我在Linux环境下运行这个没有问题。

经过一番研究,我发现了很多涉及Virtualbox的解决scheme,都是针对“旧版”Docker(Docker Toolbox)的。

为了避免与NPM的symlink错误,您可以使用命令:

 npm install --no-bin-links 

但是,要绝对避免symlink问题,不要将您的nodejs项目设置为挂载目录(从Window挂载)

我以下面的方式解决。

在这个例子中,我将使用/usr/src作为要在容器中安装的目录:

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

这样你就可以将c:/path/to/src挂载到/usr/src/usr/src/node_modules将挂载一个数据卷。

最终的结果是,即使在主机上创建了一个node_modules目录,它仍然是空的。

该解决方案利用Docker数据卷 。

这适用于每次要避免主机上报告的挂载目录的子目录中发生的更改,而不仅仅是针对node_modules