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

Windows 7 下使用 laradock ,如何正确映射目录

重启nginx,docker-compose up -d nginx

会发现 Kitematic 界面上 nginx 容器 Volumes 设置项里,/var/www 的 LOCAL FLODER 显示 no folder

Windows 7 下使用 laradock 关于目录映射的问题

这个时候别慌,进入nginx容器看看,就可以看到 /var/www/ 下面的内容跟 D:\www\ 是一样的了。

正确映射 Nginx 相关目录

虽然我已经用 docker compose 构建完所有的镜像,启动端口也不冲突,项目目录也映射好了,但是最后访问 laravel 项目网址还是拒绝访问,查了一些资料,大概是因为 DockerTool box 读取不到laradock的 nginx 配置。如下:

Windows 7 下使用 laradock ,如何正确映射目录

正如前面提到 .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 容器,再进入容器检查,如图:

Windows 7 下使用 laradock ,如何正确映射目录

此时,项目访问成功。

Windows 7 下使用 laradock ,如何正确映射目录

如果用到 laradock 其他组件容器,解决数据卷的问题就举一反三吧

传了一份代码,仅供参考 my_laradock

结语

有时候对一个东西不熟悉,出错的时候反而会想太多,导致没找到正确方向。所以,就记录一下。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

你好!按照你的映射方法,能成功将目录映射到 workspace,但是 nginx 配置没有读取到,在 workspace 里面也找不到 /etc/nginx 文件夹。请问是什么原因呢

3年前 评论
chenlixin (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!