docker-Laravel-msyql-主从服务部署

1.mysql部署

mysql镜像拉取

docker pull mysql:5.7.13

部署主从mysql配置


参考网址:http://www.liyblog.top/p/11

【运行主容器】

docker run --name ipbank_master -p 8016:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13

2.使用Navicat或者workbanch友好的图像化界面执行SQL,执行完毕,结果如图所示为正常

GRANT REPLICATION SLAVE ON . to 'backup'@'%' identified by 'backup';

show grants for 'backup'@'%';

当状态显示为上方的一致时表明应该主从配置成功

9.如果失败,可以查看日志追踪,查看具体的报错日志

docker logs slave -f

10.如果 Slave_IO_Running与Slave_SQL_Running 两个参数不是yes可以使用下面的方案解决

此方法适用首先要保证库的数据是一致的,否则这种方法无效

stop slave; 

set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 

start slave;

11.出现slave容器配置主从出现(Slave is not configured or failed to initialize properly)报错

此错误有两种可能

一。是因为mysql中配置文件权限问题 ,配置文件权限分配过大,mysql会自动忽略配置文件的读取

解决方案:

参考网站:https://www.jb51.net/article/99027.htm

找到my.conf文件,设置权限为644 

命令:chmod 644 /etc/mysql/my.cnf

二。从 5.6.25 版本使用 innobackupex 备份,在 5.7.15 版本中应用恢复,在 5.6.25 版本中,主从信息记录到了文件中,5.7.15 版本中的主从信息记录的是在表中,所以数据备份后需要对下面几张表进行重建

进入mysql后使用如下命令

use mysql;

drop table slave_master_info;

drop table slave_relay_log_info;

drop table slave_worker_info;

drop table innodb_index_stats;

drop table innodb_table_stats;

source /usr/share/mysql/mysql_system_tables.sql(需要查找sql文件位置 可以使用命令:find / -name mysql_system_tables.sql)

外网使用记录(master,slave1)

mysql挂载到data下

(master) 

docker run -it --name zxb_mysql_master -p 8016:3306 -e MYSQL_ROOT_PASSWORD=e5244a754923b46c --privileged=true -v /data/ZhengXin/mysql/conf/master.cnf:/etc/mysql/my.cnf -v /data/ZhengXin/mysql/data:/var/lib/mysql -v /data/ZhengXin/mysql/logs:/var/log/mysql -d mysql:5.7.13

(slave1) 

docker run -it --name zxb_mysql_slave1 -p 8017:3306 -e MYSQL_ROOT_PASSWORD=e5244a754923b46c --privileged=true -v /data/ZhengXin/mysql/conf/slave1.cnf:/etc/mysql/my.cnf -v /data/ZhengXin/mysql/slave1_data:/var/lib/mysql -v /data/ZhengXin/mysql/logs:/var/log/mysql -d mysql:5.7.13


2.拉取redis镜像

docker pull redis:3.2

3.运行redis镜像

docker run --name ipbank_redis -p 8015:6379 -d redis:3.2

4.拉取php镜像

docker pull php:7.1-fpm

5.运行php镜像

运行php镜像时:

    1.指定映射端口

    2.挂载本地目录

    3.link需要的mysql,redis

docker run -d -p 8029:9000 --name zxb_phpserve -v /opt/server/ipbank/www:/var/www/html -v /opt/server/ipbank/php:/usr/local/etc/php --link ipbank_redis:ipbank_redis --privileged=true php:7.2-fpm

6.运行nginx镜像

运行php镜像时:

    1.指定映射端口

    2.挂载本地目录

    3.link需要的php_serve

docker run --name zxb_nginxserve -d -p 8028:80 -v /opt/server/ipbank/www:/usr/share/nginx/html -v /opt/server/ipbank/nginx:/etc/nginx -v /opt/server/ipbank/logs/nginx.logs:/var/log/nginx --link zxb_phpserve:zxb_phpserve --privileged=true nginx

docker run --name zxb_nginxserve -d -p 8068:80 -v /Users/liyi/school_server/scratch-php/www:/usr/share/nginx/html -v /Users/liyi/school_server/scratch-php/nginx:/etc/nginx -v /Users/liyi/school_server/scratch-php/logs/nginx.logs:/var/log/nginx --link scratch_phpserve:scratch_phpserve --privileged=true nginx

7.php容器环境扩展和服务安装

扩展安装参考网站:https://blog.csdn.net/lggirls/article/deta...

扩展安装路径

/usr/local/bin

Gd扩展安装

apt-get install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev

docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2

docker-php-ext-install gd

Curl扩展安装

apt-get install libcurl4-openssl-dev

docker-php-ext-install curl

常见问题参考网站

https://phperzh.com/articles/1789

configure: error: jpeglib.h not found.

解决办法:

apt-get install libjpeg-dev

Redis 安装参考 http://www.iamlintao.com/6695.html

(如果 无法解压 直接复制redis地址下载到本机)

curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archi...

tar xfz /tmp/redis.tar.gz

rm -r /tmp/redis.tar.gz

mkdir -p /usr/src/php/ext

mv phpredis-3.1.3 /usr/src/php/ext/redis

docker-php-ext-install redis

安装gmp扩展

apt-get install -y libgmp-dev

ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

docker-php-ext-install gmp

如果无法创建ini文件需要创建下列文件夹

mkdir /usr/local/etc/php/conf.d/

Nginx 配置文件缺失问题

需要在映射文件拉去nginx的配置文件,地址在码云上有

Mysql无法连接的问题(Access denied for user 'root'@'172.17.0.1')

需要在映射文件拉取nginx的配置文件,地址在码云上有

安装crontab 定时任务

apt-get install cron

service cron start

安装mysqli扩展

docker-php-ext-install mysqli

安装pdo_mysql扩展

docker-php-ext-install pdo_mysql

安装bcmath扩展

docker-php-ext-install bcmath

安装zip, unzip

apt-get install --yes zip unzip

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!