win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境
win7环境基础在上一篇win7下docker环境搭建nginx+php-fpm+easyswoole开发环境中已经详细叙述搭建完成
本篇文章将叙述如何在上述基础上搭建laravel开发环境,这个其实安装跟easyswoole有点类似:
1、先配置nginx,
详细代码如下
server { listen 80; listen [::]:80; server_name laravel.test; root /var/www/locallaravel/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fixes timeouts fastcgi_read_timeout 600; include fastcgi_params; } location ~ /\.ht { deny all; } location /.well-known/acme-challenge/ { root /var/www/letsencrypt/; log_not_found off; } error_log /var/log/nginx/locallaravel_error.log; access_log /var/log/nginx/locallaravel_access.log; }
2、宿主机本机目录上新建一个sh脚本文件,用于运行安装laravel,并命名为laravel_install.sh详细代码如下:
#!/bin/sh # swoole image must contain php composer swoole_img="swoole:4.1.2" container_code_path="/app" work_dir="/www" docker_compose_file_path="/www/dnmp" cur_dir=$(pwd) if [ -d ${work_dir}/locallaravel ]; then sudo rm -rf ${work_dir}/locallaravel fi Init_Easyswoole() { docker run --rm --net=host -v ${work_dir}:${container_code_path}:rw composer sh -c "composer config -g repo.packagist composer https://packagist.laravel-china.org && cd ${container_code_path} && composer create-project --prefer-dist laravel/laravel locallaravel" } Init_Easyswoole cd ${docker_compose_file_path} docker-compose up -d docker-compose ps
以上的word_dir为宿主机的工作目录,/www/dnmp为dnmp环境中的docker-compose.yml目录;
使用xshell进行连接docker虚拟机,进入到lavarel_install.sh所在目录,运行:
./laravel_install.sh
laravel安装成功后,打开Docker Quickstart Terminal.exe
进入到dnmp目录,运行
docker-compose down
再运行
docker-compose up -d
然后查看容器是否全部启动
docker-compse ps
发现已经全部启动,在win7宿主机进行访问http://localhost:9501/,已经可以正常使用了
接下来就可以开始使用laravel了,不过呢还需要再安装mysql作为数据库
3、安装mysql
将docker-compose.yml的mysql配置注释去掉
记得开启一下mysql声明卷,不然的话就会报一下错误
并修改.env中mysql配置
接下来,还是老样子,先将镜像dnmp停止
然后安装mysql,因为之前没有安装过mysql,所以需要先build
docker-compose build mysql
build成功之后,重新启动镜像
docker-compose up -d
然后查看下已启动的镜像
docker-compose ps
发现mysql已正常启动
PS,如果刚开始安装的mysql版本是8的话,用navicat连接就会出现以下错误:
解决方案是,将.env中mysql版本改为5.7(暂时没必要用最新版的),然后用xshell连接docker,删除mysql的存储卷volume(这一步没有做的话可能会导致mysql无法正常启动)
docker volume ls
docker volume rm laradock_mysql
再在Docker Quickstart Terminal.exe软件中进行如下操作,mysql5.7正常启动
docker-compose build mysql
docker-compose up -d
记得端口要做映射
再用navicat进行连接
哇塞,mysql也可以使用了,真开心~~
4、lavarel配置mysql
创建数据库locallaravel和表user,并插入一条数据;
locallavarel项目下的.env配置文件,修改下:
在locallavarel项目中app\Http\Controllers\下创建一个控制器UserController.php,并在routes\web.php中创建一个路由
Route::get('User','UserController@index');
指向刚创建的控制器UserController.php,测试访问http://laravel.test/User,结果提示:
查阅相关资料,才发现是数据库的ip对不上,然后把数据库的host改成当前机器的ip就好了