您的位置:首页 > 运维架构 > Docker

【系列7】使用Dockerfile创建带mysql的Centos Docker镜像

2017-12-02 17:05 921 查看
下面用官方的rpm源包安装mysql过慢不主张采用yum这种方式
1. 下载文件
从GitHub Dockerpool社区下载MySQL镜像项目:
[root@docker1 ~]# git clone https://github.com/DockerPool/mysql.git Cloning into 'mysql'...
remote: Counting objects: 19, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 19 (delta 4), reused 19 (delta 4), pack-reused 0
Unpacking objects: 100% (19/19), done.
查看内容,包括已经写好的Dockerfile和若干脚本:
[root@docker1 ~]# cd mysql/
[root@docker1 mysql]# ls
create_db.sh Dockerfile import_sql.sh LICENSE my.cnf mysqld_charset.cnf README.md run.sh
#本文参考了「tutum」的 Dockerfile
FROM docker.io/centos:latest

MAINTAINER Waitfish

#设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

RUN echo "Asia/Shanghai" > /etc/timezone
#注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用此程序发生不可思议的效果哦

#安装mysql服务
RUN yum update -y && \
yum install wget rpm -y && \
#wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm && \ #下载速度太慢
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm && \
#rpm -ivh mysql-community-release-el7-5.noarch.rpm --nosignature && \
yum localinstall mysql57-community-release-el7-7.noarch.rpm -y && \
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 && \
yum install mysql-community-server -y

# 删除预安装的数据库文件
RUN rm -rf /var/lib/mysql/*

# 添加文件夹下的 MYSQL 配置文件
ADD my.cnf /etc/mysql/conf.d/my.cnf
ADD mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf

# 添加 MYSQL 的脚本
ADD import_sql.sh /import_sql.sh
ADD run.sh /run.sh
RUN chmod 755 /*.sh

# 设置环境变量,用户名以及秘密
ENV MYSQL_USER admin
ENV MYSQL_PASS **Random**

# 设置主从复制模式下的环境变量
ENV REPLICATION_MASTER **False**
ENV REPLICATION_SLAVE **False**
ENV REPLICATION_USER replica
ENV REPLICATION_PASS replica

# 设置可以允许挂载的卷,可以用来备份数据库和配置文件
VOLUME ["/etc/mysql", "/var/lib/mysql"]

# 设置可以映射的端口
EXPOSE 3306

# 设置自启动的脚本
CMD ["/run.sh"]
*********************************************************************************************************************************************************************************************************************************************************************************
快速创建带mysql的Centos Docker镜像
[root@docker1 mysql]# ls
create_db.sh my.cnf mysql-community-libs-5.7.18-1.el7.x86_64.rpm RPM
Dockerfile mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-server-5.7.18-1.el7.x86_64.rpm Running
import_sql.sh mysql-community-common-5.7.18-1.el7.x86_64.rpm mysqld_charset.cnf run.sh
LICENSE mysql-community-devel-5.7.18-1.el7.x86_64.rpm README.md

下面需要事先下载如下的RPM包:
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-devel-5.7.18-1.el7.x86_64.rpm
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-server-5.7.18-1.el7.x86_64.rpm

[root@docker1 mysql]# cat Dockerfile
#本文参考了「tutum」的 Dockerfile
FROM sshd:centos

MAINTAINER Waitfish

#设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

RUN echo "Asia/Shanghai" > /etc/timezone
#注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用此程序发生不可思议的效果哦

ADD mysql-community* /

#安装mysql服务 --nosignature 去掉校验安装
RUN yum update -y && \
yum install wget rpm -y && \
#rpm -e mariadb-libs* --nodeps && \
#yum install libaio* libnuma* net-tools* perl* -y && \
yum install numactl perl libaio net-tools -y && \
yum install gcc* ncurses ncurses-devel -y && \
rpm -ivh mysql-community-common* --nosignature && \
rpm -ivh mysql-community-libs* --nosignature && \
rpm -ivh mysql-community-devel* --nosignature && \
rpm -ivh mysql-community-client* --nosignature && \
rpm -ivh mysql-community-server* --nosignature

# 删除预安装的数据库文件
RUN rm -rf /var/lib/mysql/*

# 添加文件夹下的 MYSQL 配置文件
ADD my.cnf /etc/mysql/conf.d/my.cnf
ADD mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf

# 添加 MYSQL 的脚本
ADD import_sql.sh /import_sql.sh
ADD run.sh /run.sh
RUN chmod 755 /*.sh

# 设置环境变量,用户名以及秘密
ENV MYSQL_USER admin
ENV MYSQL_PASS **Random**

# 设置主从复制模式下的环境变量
ENV REPLICATION_MASTER **False**
ENV REPLICATION_SLAVE **False**
ENV REPLICATION_USER replica
ENV REPLICATION_PASS replica

# 设置可以允许挂载的卷,可以用来备份数据库和配置文件
VOLUME ["/etc/mysql", "/var/lib/mysql"]

# 设置可以映射的端口
EXPOSE 3306

# 设置自启动的脚本
CMD ["/run.sh"]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql Centos Docker