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

问题描述 投票:0回答:1

我想在一个依赖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无法将项目安装在目标容器上...

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

docker npm windows-subsystem-for-linux
1个回答
0
投票

[使用WSL时,适用于Windows的Docker期望您以与此匹配的格式提供卷路径:/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

© www.soinside.com 2019 - 2024. All rights reserved.