npm + wsl + docker和卷挂载有什么解决方案?

时间:2019-11-28 22:00:00

标签: docker npm windows-subsystem-for-linux

我想研究一个依赖Docker和NPM(实际上是LAMP服务器)的Web项目。我在WSL上运行,而Docker守护程序在Windows上运行。

这是我的限制条件:

  • 要使用Docker挂载卷,我必须在Windows文件系统上找到我的项目,例如 /mnt/c/...
  • 要使用通过软链接使用的npm,我必须在WSL文件系统上找到我的项目,例如 /srv/...

很明显,我不能满足这两个要求。

例如,如果我从Windows文件系统上的文件夹中的WSL进行npm安装,则会出现很多错误,例如:

npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',

或者,只是这些模块不起作用webpack not found

如果我将项目移到WSL一侧,则Docker无法将我的项目挂载在目标容器上...

我可以使用什么替代方法?

1 个答案:

答案 0 :(得分:0)

使用WSL时,Docker for Windows希望您以与以下格式匹配的卷路径:/c/Users/username/dev/myapp

但是WSL使用/mnt/c/Users/username/dev/myapp格式。

您必须将WSL配置为安装在/而不是/mnt上。

创建和修改新的WSL配置文件:


    sudo nano /etc/wsl.conf

    # Now make it look like this and save the file when you're done:

    [automount]
    root = /
    options = "metadata"

我们需要设置root = /,因为这将使您的驱动器挂载在 / c或/ e代替/ mnt / c或/ mnt / e。

options =“ metadata”行不是必需的,但是它将修复文件夹 和WSL上的文件许可权会挂载,因此一切都不是777。 WSL坐骑中的时间。我强烈建议您这样做!

进行了这些更改后,请退出并重新登录Windows以 确保更改生效

来源: https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly