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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

科技小能手 2017-11-12 01:31:00 浏览1549
展开阅读全文

下面用官方的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"]




本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2046751



网友评论

登录后评论
0/500
评论
科技小能手
+ 关注