如何避免 Windows 主机上 Docker 中 npm 运行 的符号链接问题?
How can avoid symlink problems with npm running in Docker on a Windows host?
我在 Windows 10.
上使用 latest Docker public beta
我正在开发一个 Node.js 应用程序,我正在使用 Docker 并将我的 src 目录作为卷安装在容器中。
我不能从容器内部 运行 npm install
因为它会导致创建符号链接(在 node_modules 目录中),如果主机是 Windows.
有什么办法可以解决这个问题吗?
我在 Linux 环境中 运行 对此没有任何问题。
经过一番研究,我发现了很多涉及 Virtualbox 的解决方案,适用于 Docker 的 "old" 版本(Docker 工具箱)。
要避免 NPM 出现 symlink
错误,您可以使用命令:
npm install --no-bin-links
但是,为了绝对避免 symlink
问题,您不应将 nodejs 项目设置在挂载目录中(从 Window 挂载)
我是按照下面的方法解决的
在本例中,我将使用 /usr/src
作为要挂载到容器中的目录:
- 将您的应用程序的 src 目录挂载到
/usr/src
:-v /path/to/src:/usr/src
- 定义
node_modules
的数据量:-v /usr/src/node_modules
通过这种方式,您将 /path/to/src
挂载到 /usr/src
并且 /usr/src/node_modules
将作为数据卷挂载。
最终结果是,即使在主机上创建了一个 node_modules
目录,它仍然是空的。
此解决方案利用了 Docker Data Volumes.
每当您希望避免挂载目录的子目录中的更改反映在主机上时,这都适用,而不仅仅是 node_modules
。
我在 Windows 10.
上使用 latest Docker public beta我正在开发一个 Node.js 应用程序,我正在使用 Docker 并将我的 src 目录作为卷安装在容器中。
我不能从容器内部 运行 npm install
因为它会导致创建符号链接(在 node_modules 目录中),如果主机是 Windows.
有什么办法可以解决这个问题吗?
我在 Linux 环境中 运行 对此没有任何问题。
经过一番研究,我发现了很多涉及 Virtualbox 的解决方案,适用于 Docker 的 "old" 版本(Docker 工具箱)。
要避免 NPM 出现 symlink
错误,您可以使用命令:
npm install --no-bin-links
但是,为了绝对避免 symlink
问题,您不应将 nodejs 项目设置在挂载目录中(从 Window 挂载)
我是按照下面的方法解决的
在本例中,我将使用 /usr/src
作为要挂载到容器中的目录:
- 将您的应用程序的 src 目录挂载到
/usr/src
:-v /path/to/src:/usr/src
- 定义
node_modules
的数据量:-v /usr/src/node_modules
通过这种方式,您将 /path/to/src
挂载到 /usr/src
并且 /usr/src/node_modules
将作为数据卷挂载。
最终结果是,即使在主机上创建了一个 node_modules
目录,它仍然是空的。
此解决方案利用了 Docker Data Volumes.
每当您希望避免挂载目录的子目录中的更改反映在主机上时,这都适用,而不仅仅是 node_modules
。