龙空技术网

「一键部署」Dockerfile创建带mysql的镜像并实现数据的初始化

波波说运维 894

前言:

当前我们对“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内容,感兴趣的朋友可以关注下!!

标签: #mysql docker镜像 #mysqldocker镜像 #dockermysql镜像