前言:
当前我们对“mysql docker镜像”可能比较注重,各位老铁们都需要学习一些“mysql docker镜像”的相关知识。那么小编在网上收集了一些关于“mysql docker镜像””的相关资讯,希望小伙伴们能喜欢,我们快快来了解一下吧!概述
之前研究自动化运维的时候写的一个dockerfile,可以一键部署mysql,分享给大家,有些不一样的地方自己修改,写的比较简单。
Dockerfile内容:
FROM mysql:5.7MAINTAINER GZCSS/HUANGWEIBORUN apt-get updateRUN apt-get install ll wget vim zip ssh telnet curl -yWORKDIR /homeRUN mkdir scripts#将所需文件放到镜像中ADD setup.sh /home/scripts/setup.shADD schema.sql /home/scripts/schema.sqlADD jpcpdb180109.sql /home/scripts/jpcpdb180109.sqlADD privileges.sql /home/scripts/privileges.sqlADD my.cnf /etc/my.cnf RUN chmod 755 /etc/my.cnfRUN chmod 755 /home/scripts/*#设置免密登录ENV MYSQL_ALLOW_EMPTY_PASSWORD yes#开放端口EXPOSE 3306#设置容器启动时执行的命令CMD ["sh", "/home/scripts/setup.sh"
setup.sh
先导入数据,然后才是设置用户和权限,是因为mysql容器一开始为免密登录,Dockerfile中有如下设置:ENV MYSQL_ALLOW_EMPTY_PASSWORD yes,此时执行导入数据命令不需要登录验证操作,如果是先执行权限操作,那么导入数据则需要登录验证,整个过程就麻烦了许多。
#!/bin/bashset -e #查看mysql服务的状态,方便调试,这条语句可以删除echo `service mysql status` echo '1.启动mysql....'#启动mysqlservice mysql startsleep 3echo `service mysql status` echo '2.开始导入数据....'#导入数据mysql < /home/scripts/schema.sqlecho '3.导入数据完毕....' sleep 3echo `service mysql status` #重新设置mysql密码echo '4.开始修改密码....'mysql < /home/scripts/privileges.sqlecho '5.修改密码完毕....' #sleep 3echo `service mysql status`echo `mysql容器启动完毕,且数据导入成功` tail -f /dev/null
schema.sql
-- 创建数据库create database jpcpdb;use jpcpdb;source /home/scripts/jpcpdb180109.sql;show tables;show databases;
privileges.sql
use mysql;select host, user from user;grant all privileges on *.* to root@'localhost' identified by '密码' with grant option;grant all privileges on *.* to root@'%' identified by '密码' with grant option;select host,user from user;flush privileges;创建镜像
docker build -t mysql5.7_jpcpdb:1.0 .
有兴趣的朋友也可以试一下,这里的逻辑可能有些复杂了,大家自己根据实际情况简化吧~
后面会分享更多关于devops和DBA内容,感兴趣的朋友可以关注下!!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。