【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
下面用官方的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
總結
以上是生活随笔為你收集整理的【系列7】使用Dockerfile创建带mysql的Centos Docker镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 针对“云计算”服务安全思路的改进-花瓶模
- 下一篇: 11g新特性-自动sql调优(Autom