我想研究一个依赖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无法将我的项目挂载在目标容器上...
我可以使用什么替代方法?
答案 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