利用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;                    #刷新权限

标签: docker
2019.11.14   /   热度:1661   /   分类: docker

发表评论:

©地球仪的BLOG  |  Powered by Emlog