參考網(wǎng)站:http://www.liyblog.top/p/11.html
1.mysql部署
mysql鏡像拉取
docker pull mysql:5.7.13
部署主從mysql配置
參考網(wǎng)址:https://my.oschina.net/u/3773384/blog/1810111
【運(yùn)行主容器】
docker run --name ipbank_master -p 8016:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
2.使用Navicat或者workbanch友好的圖像化界面執(zhí)行SQL穿铆,執(zhí)行完畢驰坊,結(jié)果如圖所示為正常
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';
show grants for 'backup'@'%';
3.拷貝一份MySQL配置文件
docker cp ipbank_master:/etc/mysql/my.cnf /opt/server/ipbank/master/my.cnf
4.修改my.cnf生蚁,在 [mysqld] 節(jié)點(diǎn)最后加上后保存
log-bin=mysql-bin?
server-id=1
5.將修改后的文件覆蓋Docker中MySQL中的配置文件
docker cp /opt/server/ipbank/master/my.cnf ipbank_master:/etc/mysql/my.cnf
6.重啟 mysql 的docker , 讓配置生效
docker restart ipbank_master
【運(yùn)行從容器】
1.運(yùn)行從mysql服務(wù)
docker run --name ipbank_slave1 -p 8017:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
2.拷貝一份MySQL配置文件
docker cp ipbank_slave1:/etc/mysql/my.cnf /opt/server/ipbank/slave1/my.cnf
4.修改my.cnf瞻赶,在 [mysqld] 節(jié)點(diǎn)最后加上后保存
log-bin=mysql-bin?
server-id=2
5.將修改后的文件覆蓋Docker中MySQL中的配置文件
docker cp /opt/server/ipbank/slave1/my.cnf ipbank_slave1:/etc/mysql/my.cnf
6.重啟slave1容器视乐,使配置生效
docker restart ipbank_slave1
7.使用Navicat或者workbanch友好的圖像化界面執(zhí)行SQL(host處如果部署的為本地服務(wù)應(yīng)該填寫本地服務(wù)固定IP地址蒸甜,不能直接填寫127.0.0.1或者localhost)
CHANGE MASTER TO
MASTER_HOST='192.168.1.106'?
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456';
START SLAVE;
參數(shù)解釋
MASTER_HOST 填Navicat連接配置中的ip應(yīng)該就可以
MASTER_PORT 主容器的端口
MASTER_USER 同步賬號(hào)的用戶名
MASTER_PASSWORD 同步賬號(hào)的密碼
8.檢查是否配置成功
showslavestatus;
當(dāng)狀態(tài)顯示為上方的一致時(shí)表明應(yīng)該主從配置成功
9.如果失敗却嗡,可以查看日志追蹤闰渔,查看具體的報(bào)錯(cuò)日志
docker logs slave -f
10.如果?Slave_IO_Running與Slave_SQL_Running 兩個(gè)參數(shù)不是yes可以使用下面的方案解決
此方法適用首先要保證庫(kù)的數(shù)據(jù)是一致的暮现,否則這種方法無效
stopslave;?
setGLOBALSQL_SLAVE_SKIP_COUNTER=1;?
startslave;
11.出現(xiàn)slave容器配置主從出現(xiàn)(Slave is not configured or failed to initialize properly)報(bào)錯(cuò)
此錯(cuò)誤有兩種可能
一还绘。是因?yàn)閙ysql中配置文件權(quán)限問題 ,配置文件權(quán)限分配過大栖袋,mysql會(huì)自動(dòng)忽略配置文件的讀取
解決方案:
參考網(wǎng)站:https://www.jb51.net/article/99027.htm
找到my.conf文件拍顷,設(shè)置權(quán)限為644?
命令:chmod 644?/etc/mysql/my.cnf
二。從 5.6.25 版本使用?innobackupex 備份塘幅,在 5.7.15 版本中應(yīng)用恢復(fù)昔案,在 5.6.25 版本中,主從信息記錄到了文件中电媳,5.7.15 版本中的主從信息記錄的是在表中踏揣,所以數(shù)據(jù)備份后需要對(duì)下面幾張表進(jìn)行重建
進(jìn)入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)
外網(wǎng)使用記錄(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.運(yùn)行redis鏡像
docker run --name ipbank_redis -p 8015:6379 -d redis:3.2
4.拉取php鏡像
docker pull php:7.1-fpm
5.運(yùn)行php鏡像
運(yùn)行php鏡像時(shí):
? ? 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.運(yùn)行nginx鏡像
運(yùn)行php鏡像時(shí):
? ? 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--linkzxb_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--linkscratch_phpserve:scratch_phpserve?--privileged=true nginx
7.php容器環(huán)境擴(kuò)展和服務(wù)安裝
擴(kuò)展安裝參考網(wǎng)站:https://blog.csdn.net/lggirls/article/details/89395827
擴(kuò)展安裝路徑
/usr/local/bin
Gd擴(kuò)展安裝
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擴(kuò)展安裝
apt-get install libcurl4-openssl-dev
docker-php-ext-install curl
常見問題參考網(wǎng)站
https://phperzh.com/articles/1789
configure: error: jpeglib.h not found.
解決辦法:
apt-get install libjpeg-dev
Redis 安裝參考http://www.iamlintao.com/6695.html
(如果 無法解壓 直接復(fù)制redis地址下載到本機(jī))
curl -L -o /tmp/redis.tar.gzhttps://github.com/phpredis/phpredis/archive/3.1.3.tar.gz
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擴(kuò)展
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
如果無法創(chuàng)建ini文件需要?jiǎng)?chuàng)建下列文件夾
mkdir /usr/local/etc/php/conf.d/
Nginx 配置文件缺失問題
需要在映射文件拉去nginx的配置文件捞稿,地址在碼云上有
Mysql無法連接的問題(Access?denied?for?user?'root'@'172.17.0.1')
需要在映射文件拉取nginx的配置文件,地址在碼云上有
安裝crontab 定時(shí)任務(wù)
apt-get install cron
service cron start
安裝mysqli擴(kuò)展
docker-php-ext-install mysqli
安裝pdo_mysql擴(kuò)展
docker-php-ext-install pdo_mysql
安裝bcmath擴(kuò)展
docker-php-ext-install bcmath
安裝zip, unzip
apt-get install --yes zip unzip