博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dockerfile构建MySQL
阅读量:6311 次
发布时间:2019-06-22

本文共 2777 字,大约阅读时间需要 9 分钟。

转自:https://www.cnblogs.com/jsonhc/p/7807931.html

利用Dockerfile自定义构建MySQL服务折腾了几天,一直在启动服务上出现错误,现在终于解决了该问题,这里进行记录一下

本文参考

此次Dockerfile文件中以centos:latest为基础镜像,在此基础上进行安装MySQL服务(这里以mariadb为例)

构建的原理:

1、利用Dockerfile进行安装MySQL服务(yum安装或者以rpm包安装(由于网络问题可将需要安装的包下载到本地进行安装))

2、编写shell脚本,将安装好的mariadb进行重新初始化,并启动mariadb,执行需要的sql脚本,关闭mariadb,最后通过前台开启服务

3、由于MySQL5.6和MySQL5.7的初始化方式不一样,本文介绍的适用于MySQL5.6(后面会有5.7的案例)

 

查看整个构建目录:

[root@docker mysql]# tree .├── business.sql├── Dockerfile├── MariaDB-10.0.33-centos7-x86_64-client.rpm├── MariaDB-10.0.33-centos7-x86_64-common.rpm├── MariaDB-10.0.33-centos7-x86_64-compat.rpm├── MariaDB-10.0.33-centos7-x86_64-server.rpm├── mariadb.repo├── server.cnf├── setup.sh└── setup.sh.bak

目录中有下载好的mariadb安装的包,当然如果你网络好,只需要配置repo就行,然后将Dockerfile中的安装rpm的过程换成替换repo就ok

下面介绍Dockerfile文件,并介绍构建过程执行了什么:

[root@docker mysql]# cat Dockerfile FROM centosMAINTAINER json_hc@163.comCOPY MariaDB-10.0.33-centos7-x86_64-client.rpm /root/MariaDB-10.0.33-centos7-x86_64-client.rpmCOPY MariaDB-10.0.33-centos7-x86_64-common.rpm /root/MariaDB-10.0.33-centos7-x86_64-common.rpm COPY MariaDB-10.0.33-centos7-x86_64-compat.rpm  /root/MariaDB-10.0.33-centos7-x86_64-compat.rpmCOPY MariaDB-10.0.33-centos7-x86_64-server.rpm  /root/MariaDB-10.0.33-centos7-x86_64-server.rpmWORKDIR /rootRUN yum remove mysql-libs -yRUN yum -y install *.rpmADD business.sql /root/business.sqlADD server.cnf /etc/my.cnf.d/server.cnfADD setup.sh /root/setup.shRUN yum clean allRUN chmod +x /root/setup.shEXPOSE 3306CMD ["/root/setup.sh"]

1、构建使用的基础镜像为centos:latest

2、将下载好的rpm包copy到镜像中,然后进行安装

3、将需要执行的sql、配置文件,最后执行的shell脚本也copy到镜像中

在执行setup.sh脚本之前mariadb服务已经安装完毕,基本的数据目录还是/var/lib/mysql

将配置文件拷贝到了镜像中,查看配置文件:

[root@docker mysql]# cat server.cnf [mysqld]bind-address=0.0.0.0console=1general_log=1general_log_file=/dev/stdout#log_error=/dev/stderrcollation-server=utf8_unicode_cicharacter-set-server=utf8

里面的内容可以进行修改或者添加更多

查看setup.sh的内容:

[root@docker mysql]# cat setup.sh#!/bin/shchown -R mysql:mysql /var/lib/mysqlmysql_install_db --user=mysql > /dev/nullmysqld_safe --user=mysql &sleep 5mysql < /root/business.sqlsleep 5ps -wef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9mysqld_safe --user=mysql

由于需要重新将安装好的mariadb服务进行初始化,所以避免出错可以将数据目录进行权限授予

MySQL5.6的初始化为mysql_install_db加上一些参数

初始化数据库后,后台开启mariadb服务,然后将sql进行执行:

[root@docker mysql]# cat business.sql create database wordpress DEFAULT CHARACTER SET utf8;USE mysql;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;UPDATE user SET password=PASSWORD("root") WHERE user='root';FLUSH PRIVILEGES;

sql内容就是创建的库和设置root账号的密码

sql执行完成后setup.sh脚本后面就是将mariadb进程杀掉,最后由前台运行mariadb服务,如果在启动容器中遇见了错误,请利用docker logs container_name/container_id

进行查看,根据错误提示进行解决

自定义构建MySQL服务的项目可以在github查看:

转载于:https://www.cnblogs.com/maohuidong/p/9914794.html

你可能感兴趣的文章
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>