Laradock重建镜像后在Workspace中无法查看WSL2内项目文件
Laradock WSL2 重建镜像后项目文件挂载异常的排查与解决
核心问题定位
WSL2中项目根目录与Laradock目录同级,APP_CODE_PATH_HOST配置为../,但Workspace容器内仅能看到Laradock文件夹,偶尔出现的项目文件夹为空,Docker Desktop显示挂载配置正常,大概率是WSL2与Docker的权限映射、文件系统同步问题。
1. 验证WSL2文件系统与Docker集成状态
- 在WSL2终端执行,确认项目根目录权限:
确保所有者是当前WSL用户(非root),权限至少为ls -ld /home/[username]/[project_name]755。 - 打开Docker Desktop,进入「设置」→「Resources」→「WSL Integration」,确认当前使用的WSL发行版(如Ubuntu)处于开启状态,重启Docker Desktop生效。
2. 修正Laradock挂载配置与权限映射
- 打开Laradock目录下的
.env文件:- 将
APP_CODE_PATH_HOST从相对路径改为WSL2绝对路径,避免解析错误:APP_CODE_PATH_HOST=/home/[username]/[project_name] - 添加用户UID/GID映射,消除容器内权限不匹配:
先在WSL2终端获取当前用户的UID和GID:
然后在id -u # 输出UID,如1000 id -g # 输出GID,如1000.env中设置:WORKSPACE_PUID=1000 WORKSPACE_PGID=1000
- 将
- 重新构建并启动Workspace容器:
docker-compose build workspace docker-compose up -d workspace
3. 清理Docker无效缓存与挂载卷
- 彻底停止并清理Laradock容器及关联卷:
docker-compose down -v - 删除Docker中未使用的卷:
docker volume prune - 清理Docker未使用的镜像(谨慎操作,确认后输入
y):docker system prune -a - 重启WSL2与Docker Desktop:
在Windows终端执行:
重新打开WSL2终端后,再启动Docker Desktop。wsl --shutdown
4. 测试挂载有效性
- 在WSL2项目根目录创建测试文件:
echo "test mount content" > /home/[username]/[project_name]/test-mount.txt - 进入Workspace容器验证:
若能看到docker-compose exec workspace bash ls /var/wwwtest-mount.txt,说明挂载正常;若项目目录存在但文件为空,执行容器内权限修复:chown -R 1000:1000 /var/www # 替换为你的UID/GID
内容的提问来源于stack exchange,提问作者Trekstler
相关产品推荐
相关产品推荐

