mysql的dockerfile_Dockerfile构建MySQL

利用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]# catDockerfile

FROM centos

MAINTAINER json_hc@163.com

COPY MariaDB-10.0.33-centos7-x86_64-client.rpm /root/MariaDB-10.0.33-centos7-x86_64-client.rpm

COPY 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.rpm

COPY MariaDB-10.0.33-centos7-x86_64-server.rpm /root/MariaDB-10.0.33-centos7-x86_64-server.rpm

WORKDIR/root

RUNyum remove mysql-libs -y

RUNyum -y install *.rpm

ADD business.sql/root/business.sql

ADD server.cnf/etc/my.cnf.d/server.cnf

ADD setup.sh /root/setup.shRUNyumclean all

RUNchmod +x /root/setup.shEXPOSE3306CMD ["/root/setup.sh"]

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

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

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

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

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

[root@docker mysql]# catserver.cnf

[mysqld]

bind-address=0.0.0.0console=1general_log=1general_log_file=/dev/stdout

#log_error=/dev/stderr

collation-server=utf8_unicode_ci

character-set-server=utf8

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

查看setup.sh的内容:

[root@docker mysql]# cat setup.sh#!/bin/sh

chown -R mysql:mysql /var/lib/mysql

mysql_install_db--user=mysql > /dev/nullmysqld_safe--user=mysql &

sleep 5mysql< /root/business.sqlsleep 5

ps -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]# catbusiness.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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值