win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

时间:2022-07-24 15:36:24

win7环境基础在上一篇win7下docker环境搭建nginx+php-fpm+easyswoole开发环境中已经详细叙述搭建完成

本篇文章将叙述如何在上述基础上搭建laravel开发环境,这个其实安装跟easyswoole有点类似:

1、先配置nginx,

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

详细代码如下

server {

    listen ;
listen [::]:; 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 =;
fastcgi_pass php-fpm:;
fastcgi_index index.php;
fastcgi_buffers 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout ;
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

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

laravel安装成功后,打开Docker Quickstart Terminal.exe

进入到dnmp目录,运行

docker-compose down

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

再运行

docker-compose up -d

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

然后查看容器是否全部启动

docker-compse ps

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

发现已经全部启动,在win7宿主机进行访问http://localhost:9501/,已经可以正常使用了

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

接下来就可以开始使用laravel了,不过呢还需要再安装mysql作为数据库

3、安装mysql

将docker-compose.yml的mysql配置注释去掉

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

记得开启一下mysql声明卷,不然的话就会报一下错误

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

并修改.env中mysql配置

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

接下来,还是老样子,先将镜像dnmp停止

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

然后安装mysql,因为之前没有安装过mysql,所以需要先build

docker-compose build mysql

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

build成功之后,重新启动镜像

docker-compose up -d

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

然后查看下已启动的镜像

docker-compose ps

发现mysql已正常启动

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

PS,如果刚开始安装的mysql版本是8的话,用navicat连接就会出现以下错误:

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

解决方案是,将.env中mysql版本改为5.7(暂时没必要用最新版的),然后用xshell连接docker,删除mysql的存储卷volume(这一步没有做的话可能会导致mysql无法正常启动)

docker volume ls

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

docker volume rm laradock_mysql

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

再在Docker Quickstart Terminal.exe软件中进行如下操作,mysql5.7正常启动

docker-compose build mysql
docker-compose up -d

记得端口要做映射

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

再用navicat进行连接

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

哇塞,mysql也可以使用了,真开心~~

4、lavarel配置mysql

创建数据库locallaravel和表user,并插入一条数据;

locallavarel项目下的.env配置文件,修改下:

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

在locallavarel项目中app\Http\Controllers\下创建一个控制器UserController.php,并在routes\web.php中创建一个路由

Route::get('User','UserController@index');

指向刚创建的控制器UserController.php,测试访问http://laravel.test/User,结果提示:

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境

查阅相关资料,才发现是数据库的ip对不上,然后把数据库的host改成当前机器的ip就好了

win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境