准备
- 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-fpm
和workspace
这两个容器
创建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
(待解决)