利用 laradock 快速搭建 laravel 开发环境

简介

编程的时候,最蛋疼的莫过于最开始的搭建开发环境了。有些开发环境搭建很方便,有些却很麻烦。国内 PHP 开发常见的框架 thinkphp 的环境搭建很简单,Windows 系统目前常见的方案是 PhpStudy 集成环境,而 linux 系统则一般是 LAMP(Linux + Apache + Mysql + PHP) 或 LNMP (Linux + Nginx + Mysql + PHP) 的架构。

目前我使用的开发系统是 Deepin 15.11,开发 IDE 是 PhpStorm,数据库访问工具是 PhpMyAdmin,因为所开发的项目需要使用 Redis 存储一些缓存数据,所以还需要安装 Reids。直接在搭建 LNMP + Redis + PhpMyadmin 的方式是可以满足我的需求,但手动安装太麻烦,且开发阶段,经常会碰到切换 PHP 版本的场景,手动搭建的切换版本麻烦。本着拿来主义的精神,我使用了 laradock 环境。

[1]laradock 是一套为 PHP 开发精心设计的 docker 配置,为了使用它,你必须安装了 git (获取laradock),docker 和 docker-compose。程序开发时,要讲究一个用,不懂原理不要紧,先用,后面再慢慢搞清楚。

必要软件安装

git的安装不做赘述,不会的自行搜索。
docker安装:请参考此书 [2]Docker 入门到实践
docker-compose 的安装请参考 [3]安装介绍

构建 laradock 环境

假设你的 PHP 工程代码都位于 /home/user/work 目录下,work 目录下有 A 和 B 两个工程。
1. cd 至 work 目录
cd /home/user/work
2. 获取 laradock 源码
git clone https://github.com/Laradock/laradock.git
3. 进入 laradock 目录,复制 env-example.env
cp env-example .env
laradock 提供的 env-example 文件是一个示例配置,主要用于配置各个软件的版本,默认采用对应软件的最新版,一般不用修改。
因为我本地开发使用的 mysql 是 5.7 的,所以我将 .env 中配置的 mysql 版本由 latest 改为了 5.7。
4. 配置站点
进入 laradock 下的 nginx 目录,在 sites 文件夹下有个 laravel.conf.example 文件,复制并重命名为 a.test.conf。编辑 a.test.conf,将 server_name 改为 a.test,将 root 改为 /var/www/A/public。因为在 docker 运行时,会根据默认配置,将与 laradock 的上级目录挂载至 nginx 容器的 /var/www 目录下,所以,原来的 A 工程在 nginx 容器内的路径实际为 /var/www/A。sever_name 改为 a.test 指定站点域名,因为是本地开发,此域名实际不存在,所以需要在本地的 hosts 文件中添加一行记录 127.0.0.1 a.test
5. 修改 A 工程的 .env 配置文件
DB_HOST=mysql
REDIS_HOST=redis
6. 运行需要的容器
docker-compose up -d nginx mysql phpmyadmin redis workspace
此步骤会按照 .env 的配置构建各个容器并运行,因为长城的存在,这步很可能会挂在某些步骤上,推荐挂梯子运行此步。另外,因为从 docker 官方仓库下载镜像速度很慢,推荐将docker配置为拉取国内镜像。
7. 开始使用
访问站点:浏览器访问 http://a.test
访问 phpmyadmin:浏览器访问 127.0.0.1:8080
运行 composer 或 laravel 工具:在 laradock 目录下运行 docker-compose exec --user=laradock workspace bash 进入容器,工程目录在 /var/www/A
查看 redis:在 laradock 目录下运行 docker-compose exec redis bash 进入容器,运行 redis-cli 命令。