构建MySQL镜像


[root@master mysql]# ll
total 76
-rw-r--r-- 1 root root 985 Apr 15 09:50 Dockerfile
-rw-r--r-- 1 root root 59239 Oct 18 2020 gpmall.sql
-rw-r--r-- 1 root root 379 Oct 18 2020 init.sh
-rw-r--r-- 1 root root 170 Apr 15 09:18 local.repo
-rw-r--r-- 1 root root 24 Oct 18 2020 run.sh

[root@master mysql]# cat local.repo
[centos]
name=centos
baseurl=ftp://192.168.200.21/centos
gpgcheck=0
enabled=1
[k8s]
name=k8s
baseurl=ftp://192.168.200.21/ChinaskillMall/gpmall-repo
gpgcheck=0
enabled=1

创建Dockerfile文件

[root@master mysql]# cat Dockerfile 
#镜像来至于私有仓库的centos
FROM 192.168.200.20/library/centos:centos7.5.1804
#镜像的作者
MAINTAINER Chinaskill
#删除容器中的其他yum源
RUN rm -rvf /etc/yum.repos.d/*
#通过宿主机的ftp配置新的yum源,将宿主机上配置好的local.repo拷贝到镜像中
COPY ./local.repo /etc/yum.repos.d/
#将宿主机上的sql文件拷贝到镜像中
COPY ./gpmall.sql /root/
#让镜像执行下载maradb-server
RUN yum -y install mariadb-server mariadb
#mysql的用户
ENV MARIADB_USER root
#mysql的密码
ENV MARIADB_PASS 123456
#设置容器支持的编码
ENV LC_ALL en_US.UTF-8
#以root用户初始化数据库
ENV mysql_install_db --user=root
#添加初始化脚本
ADD init.sh /root/init.sh
#给脚本文件授予权限
RUN chmod 775 /root/init.sh
#执行初始化脚本
RUN /root/init.sh
#对外暴露的端口
EXPOSE 3306
#添加run.脚本
ADD run.sh /root/run.sh
#授予run.sh执行权限
RUN chmod 775 /root/run.sh
#默认开机执行脚本
CMD ["/root/run.sh"]

[root@master mysql]# cat init.sh

#!/bin/bash
sleep 3
mysqld_safe &
sleep 3
mysqladmin -u "$MARIADB_USER" password "$MARIADB_PASS"
mysql -u$MARIADB_USER -p$MARIADB_PASS -e " grant all  on *.* to '$MARIADB_USER'@'%' identified by '$MARIADB_PASS';"
mysql -u$MARIADB_USER -p$MARIADB_PASS -e "create database Chinaskillmall;use Chinaskillmall;"
mysql -u$MARIADB_USER -p$MARIADB_PASS Chinaskillmall < /root/gpmall.sql
[root@master mysql]# cat run.sh 
#!/bin/bash
mysqld_safe
[root@master mysql]#docker build -t [标签名]:[版本号] [执行路径] #构建镜像

[root@master mysql]#docker run -itd [镜像名]	#运行镜像
							#-itd 后台运行
docker ps -l	查看运行的容器(镜像)

[root@master mysql]#docker exec -it [容器名]  /bin/bash