我想在一个依赖Docker和NPM(实际上是LAMP服务器)的Web项目上工作。我在WSL上运行,而Docker守护程序在Windows上运行。
这是我的约束:
/mnt/c/...
npm
,我必须在WSL文件系统上找到我的项目例如 /srv/...
显然,我不能满足这两个要求。
例如,如果我从Windows文件系统上的文件夹中的WSL进行npm安装,则会出现很多错误,例如:
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
或者,仅仅是模块不起作用webpack not found
如果我将项目移到WSL一侧,则Docker无法将项目安装在目标容器上...
我可以使用什么替代方法?
[使用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