使用 Laradock 搭建 Laravel 项目

950 阅读2分钟

准备

  • Git
  • Docker >= 1.12

安装和配置laradock

  • 启动docker,新建项目目录
$ mkdir laravel && cd laravel
  • 安装laradock
$ git clone https://github.com/Laradock/laradock.git
  • 进入laradock目录,并将env-example重命名为.env
$ cd laradock
$ cp env-example .env
  • 修改.env默认配置
# 本地存放项目代码的目录,默认和laradock同级目录
APP_CODE_PATH_HOST=../

# 容器中存放项目的目录,是laradock和项目代码的父级目录
# 会和本地目录建立软链接
APP_CODE_PATH_CONTAINER=/var/www

# 视情况而定,可将mysql版本从最新版改为5.7
- MYSQL_VERSION=latest
+ MYSQL_VERSION=5.7

# 存放数据的目录(若将mysql版本改为5.7,就要修改,否则报错)
- DATA_PATH_HOST=~/.laradock/data
+ DATA_PATH_HOST=./data
  • 构建容器
$ docker-compose up -d nginx mysql redis

有需求其他应用,可以如上述命令构建容器。另外laradock会自动构建php-fpmworkspace这两个容器

创建laravel项目

  • laradock同级目录下创建新laravel项目
$ cd ..
$ composer create-project --prefer-dist laravel/laravel myproject

创建成功后的目录结构:

- laravel
    + laradock
    + myproject
  • 配置nginx 进入laradock/nginx/sites目录,复制laravel.conf并作配置
$ cd laradock/nginx/sites
$ cp laravel.conf.example laravel.conf

根据需求修改域名和路径

server_name myproject.test;

# 要与.env中的APP_CODE_PATH_CONTAINER相同
root /var/www/myproject/public; 

修改完后重启nginx

$ docker restart laradock_nginx_1

修改本地域名解析文件,windows下进入C:\Windows\System32\drivers\etc目录编辑hosts文件,最下方新增

127.0.0.1 myproject.test

完成域名映射后打开 myproject.test 即可访问

  • 修改项目配置
$ cd ..
$ cd myproject

根据laradock下的.env修改项目目录下的.env

  • 修改redis配置
REDIS_CLIENT=predis
REDIS_HOST=redis      # 必须填redis
REDIS_PASSWORD=null
REDIS_PORT=6379
  • 修改mysql配置
DB_CONNECTION=mysql
DB_HOST=mysql        # 必须填mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

除了DB_HOST必填mysql,其他可根据laradock下的.env自行调整,但必须保持两个文件配置参数相同
若修改了laradock下的.env文件:

#停止mysql容器
$ docker-compose stop mysql

# 重启docker,并构建mysql
$ docker-compose build mysql

 # 重新创建容器
$ docker-compose up -d mysql

查看mysql容器内的版本,会发现配置已经发生改变。之后根据配置修改项目目录下的.env

这里曾遇到过一个问题,在修改完两方.env文件后,即便两个文件关于数据库的配置相同,但是进入到工作区后,在项目目录下执行php artisan migrate会报错

  • 进入工作区
$ docker-compose exec --user=laradock workspace bash
  • 进入项目目录并执行 php artisan migrate
/var/www# cd myproject
/var/www/myproject# php artisan migrate   # 报错

解决方法:laravel项目修改配置后先清理缓存,再执行

/var/www/myproject# php artisan config:clear
  • 使用数据库管理工具(mysql) 新建连接,修改连接属性
主机名或IP地址: localhost
端口:          3306  
用户名:	        default
密码:		secret

主机名或IP地址填localhost,3306端口转发,第一次连接时可以成功访问数据库,但二次连接时将会报错1251(待解决)