前言:我是根据学院派的教程操作,搭建laravel的环境,中途遇到一些问题,所以记录下来,希望能帮到一些人。
这里结构就用学院派的啦~
安装 docker
这一步,根据菜鸟教程就可以安装。
快速上手
1、克隆 Laradock
项目到本地。(新建一个文件夹,名字自定义,将 Laradock 项目克隆到文件夹下。)
git clone https://github.com/Laradock/laradock.git
2、进入 Laradock
项目,拷贝一份 env-example
为 .env
。这个是容器的配置文件。
cp env-example .env
3、 运行容器。
运行前需要做的事:
-
先修改
workspace
的Dockerfile
文件,因为其中一个install.sh
需要翻墙。修改位置:/laradock/workspace/Dockerfile,587 行
。为了方便也可以修改成我的http://lunes.gitee.io/source/install.sh
或者去github下载放到自己的服务器上。RUN if [ ${INSTALL_NODE} = true ]; then \ # Install nvm (A Node Version Manager) mkdir -p $NVM_DIR && \ curl -o- http://lunes.gitee.io/source/install.sh | bash \ && . $NVM_DIR/nvm.sh \ && nvm install ${NODE_VERSION} \ ...
-
如果使用了
Valet
、nginx
,需要先关闭,否则会端口占用。// nginx nginx -s quit (mac) // Valet valet stop
-
如果想使用mysql 5版本,可以在
.env
文件修改MYSQL_VERSION=5.7
,改成你需要的版本。否则默认是最新版本。
// 运行容器
docker-compose up -d nginx mysql
运行完成后,执行 docker-compose ps
查看是否容器运行正常,State
为 Up
即运行正常。若有问题就去查看是否端口被占用了。
(此处,我在容器运行时更新了docker,导致nginx启动失败。解决办法:把docker关闭,再开启解决问题。)
4、创建一个 laravel 项目。
在刚才创建的文件夹下,即和 laradock
同级的位置创建一个文件夹 wwwroot
,进入 wwwroot
创建项目。
没有 composer 的需要安装 一下。建议用 composer 创建项目。
也可以进入容器内安装,容器里已经有composer了。会提示 Do not run Composer as root/super user! See https://getcomposer.org/root for details
,需要创建用户、改权限,我没有弄成功。但是虽然提示不可以用用 root 运行 Composer,也可以成功创建项目。就在本机下载 composer 创建项目了。
composer create-project laravel/laravel demo "5.2.*"
创建项目后,目录结构是这样的:
.
├── laradock
└── wwwroot
└── demo
进入 laravel
项目(即 demo),修改 .env
文件,如下。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=demodb
DB_USERNAME=root
DB_PASSWORD=root
不连数据库的话,暂时用不到,如果连数据库的话,是以上配置。DB_DATABASE 是你容器里的数据库。
在容器里创建数据库:在
laradock
下执行docker-compose exec mysql bash
进入容器,执行mysql -uroot -proot
进入数据库,create database demodb;
创建数据库,demodb 可以换成你的数据库名称。
如果是线上拉下来的项目还需要修改 APP_KEY。在 laravel 项目下执行 php artisan key:generate
,复制方括号中的内容,粘贴到 APP_KEY=后面。新建的项目则不需要。
// 举例, '$' 表示在命令行执行,不要复制这个符号。'>' 表示输出。
$ php artisan key:generate
> Application key [base64:YRIbiyoRGhrzvmqLgGD1FJKwqcmy3XvMivKzW4B4S3o=] set successfully.
// .env
APP_KEY=base64:YRIbiyoRGhrzvmqLgGD1FJKwqcmy3XvMivKzW4B4S3o=
5、 修改 laradock
项目中的 .env
:
(1)docker workspace 容器映射的位置。(个人见解,如有错误还请指正。)
APP_CODE_PATH_HOST=../wwwroot
相当于本地 wwwroot
文件夹映射到容器的 www/var
(2)修改 nginx 容器的映射关系:文件位置:/laradock/nginx/sites/default.conf, 13 行
改成对应 laravel 项目名字下的public
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
# For https
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server ipv6only=on;
# ssl_certificate /etc/nginx/ssl/default.crt;
# ssl_certificate_key /etc/nginx/ssl/default.key;
server_name localhost;
root /var/www/demo/public;
index index.php index.html index.htm;
...
修改了容器配置,需要重启该容器。
docker-compose up -d nginx
容器的操作都在 laradock
项目下。
浏览 http://localhost
,可以看到 Laravel 5,环境配置完成。
如不成功,修改文件的权限。进入 laravel 项目
chmod a+w storage/logs
chmod a+w bootstrap/cache
如果有不对的地方,还请指正,感谢。😄