Windows 7 下使用 laradock ,如何正确映射目录
Windows 10 是使用 Docker Desktop for Windows,不在本篇讨论范围之内,
而 laradock 默认配置只适用于 Mac 或者 桌面版本 Linux 系统
正确映射 laravel 项目目录
我的目录情况:
- 项目目录 D:\www\code
- laradock目录 F:\micro\laradock
如果是 Windows 7,需要用到 Docker Toolbox 管理 docker 容器(基于 VirtualBox)
在编辑 laradock .env
APP_CODE_PATH_HOST 的时候,不能以主机的目录去映射,而是应该填写 VirtualBox 共享文件夹中固定分配的目录,
比如我分配过 www =》 D:\www\,这个时候我编辑 APP_CODE_PATH_HOST=/www (对应了前者,我的 laradock 目录实际在 F 盘)
ps: 每次修改完共享文件夹,记得重启 VirtualBox 的虚拟机使其生效,比如图中的 default
重启nginx,docker-compose up -d nginx
,
会发现 Kitematic 界面上 nginx 容器 Volumes 设置项里,/var/www 的 LOCAL FLODER 显示 no folder
这个时候别慌,进入nginx容器看看,就可以看到 /var/www/ 下面的内容跟 D:\www\ 是一样的了。
正确映射 Nginx 相关目录
虽然我已经用 docker compose 构建完所有的镜像,启动端口也不冲突,项目目录也映射好了,但是最后访问 laravel 项目网址还是拒绝访问,查了一些资料,大概是因为 DockerTool box 读取不到laradock的 nginx 配置。如下:
正如前面提到 .env
下已经配置 APP_CODE_PATH_HOST=/www,拒绝访问的原因确实是没有读取到 nginx 的配置,其实问题没那么复杂,因为 .env
下的 nginx 相关路径我没有调整,如下:
// 原配置
NGINX_HOST_LOG_PATH=./logs/nginx/
NGINX_SITES_PATH=./nginx/sites/
NGINX_SSL_PATH=./nginx/ssl/
// 新配置
NGINX_HOST_LOG_PATH=/www/my_laradock/logs/nginx/
NGINX_SITES_PATH=/www/my_laradock/nginx/sites/
NGINX_SSL_PATH=/www/my_laradock/nginx/ssl/
此时,my_laradock 我是直接放在 code 的同级目录,也就是 D:\www\my_laradock,这样 VirtualBox 上也就只需要映射一个 www 。
配置完重启 nginx 容器,再进入容器检查,如图:
此时,项目访问成功。
如果用到 laradock 其他组件容器,解决数据卷的问题就举一反三吧
传了一份代码,仅供参考 my_laradock
结语
有时候对一个东西不熟悉,出错的时候反而会想太多,导致没找到正确方向。所以,就记录一下。
你好!按照你的映射方法,能成功将目录映射到 workspace,但是 nginx 配置没有读取到,在 workspace 里面也找不到 /etc/nginx 文件夹。请问是什么原因呢