利用Docker快速安装lnmp+swoole开发环境
基础安装
安装git、docker和docker-compose。mac和windows用户安装docker便集成了docker-compose,类unix用户需要单独安装docker-compose。
下载dnmp docker-compose源代码
使用git clone即可,也可以直接进去下压缩包
git clone https: //github .com /yeszao/dnmp .git dnmp
|
修改php文件夹下Dockerfile以支持swoole
cd dnmp /php/ 这里有多个php安装包,选php72/
|
编辑Dockerfile,结尾添加
&&pecl install -o -f swoole \ #用pecl方式快捷安装,大家可以换成源码安装,原理一样
&& docker-php-ext- enable swoole #利用镜像本身的命令开启swoole
|
启动容器
docker-compose up -d #-d后台运行
|
等待四个镜像dnmp-mysql,dnmp-nginx,dnmp-redis,dnmp-php启动完毕打开浏览器localhost测试是否成功
代码位置
源代码在:dnmp/www/site1/ 目录下。
环境调整
上面的目录是可以配置的,可以具体修改docker-compose.yml volumes的映射,配合映射到主机的nginx配置文件去修改,注意需要保证Nginx和PHP-FPM都挂载了Host的文件目录,并且都挂载在容器的:/var/www/html。
注意如果容器已经启动,编辑之后需要停止并删除掉之前的容器
docker-compose stop && docker-compose rm
|
重新build
docker-compose up -d --build
|
其他的修改也应如此,具体可以看docker-compose说明。
问题总结
1、根据上述步骤下来,就会得到一个运行在docker上的lnmp+swoole的环境,如果使用到了swoole的话,你可能还需要修改nginx配置进行转发处理。
2、连接数据库主机名一定要127.0.0.1,因为MySQL客户端默认使用unix socket方式连接,应该直接用本地IP。
3、客户端登录的时候可能会报2509的连接错误,这个错误出现的原因是这个镜像默认使用mysql最新版,在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。
解决此问题有三种方法,一种是更新navicat驱动来解决此问题,二种是将mysql用户登录的加密规则修改为mysql_native_password,三是将mysql版本降级,修改docker-compose.yml去指定mysql版本。
本着开发环境用新不用旧,本文采用第二种办法:
docker
exec
-it dnmp-mysql
/bin/bash
;
#进入mysql bash
mysql -uroot -p123456;
use mysql;
GRANT ALL ON *.* TO
'root'
@
'%'
;
#授权 root 用户的所有权限并设置远程访问
flush privileges;
#刷新权限
ALTER USER
'root'
@
'localhost'
IDENTIFIED BY
'你的密码'
PASSWORD EXPIRE NEVER;
#修改加密规则
ALTER USER
'root'
@
'%'
IDENTIFIED WITH mysql_native_password BY
'你的密码'
;
#设置新密码
flush privileges;
#刷新权限
发表评论: