docker制作mysql镜像,运行mysql容器并初始化

本文介绍了一种基于Docker的MySQL自动化部署方案,通过自定义Dockerfile、YUM配置及初始化脚本,实现MySQL服务的自动安装、配置与启动。此方案利用Docker容器技术,简化了数据库环境搭建流程,提高了部署效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PS:经过改进,使得运行容器后mysql初始化自动完成,服务也同时启动

说明

基于docker.io/caio2k/centos7:latest镜像,通过Dockerfile文件传入一个YUM配置文件和初始化脚本,生成新的镜像build:mysql

Dockerfile文件:

FROM docker.io/caio2k/centos7:latest
MAINTAINER Ops_An nsd_anqixiang@163.com
ENV EnvironmentFile=-/etc/sysconfig/mysql
RUN rm -rf /etc/yum.repos.d/*
COPY *.repo /etc/yum.repos.d/
COPY start.sh /root/start.sh
RUN  yum -y install mysql-server && yum clean all && echo "a" |passwd --stdin root && chmod 777 /root/start.sh

VOLUME /data/mysql3306
WORKDIR /usr/local/mysql
EXPOSE 3306
HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD mysql -uroot -p123456 -e 'select user from mysql.user where user="root"'
CMD ["/usr/bin/bash", "/root/start.sh"]

YUM配置文件:
我是把mysql-5.7.17.tar.gz的源码包解压后做了一个自己的YUM仓库

[local_repo]
name=Centos-$releasever-Base
baseurl="ftp://192.168.1.254/centos-1804"
enabled=1
gpgcheck=0

[mysql_repo]
name=Centos-$releasever-Base
baseurl="ftp://192.168.1.254/myrepo"
enabled=1
gpgcheck=0

初始化脚本start.sh:

#!/bin/bash
#mysql初始化
INIT_MYSQL(){	 
		mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3306  
		/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
		pwd=`cat /root/.mysql_secret |sed -n '2p'` 
		mysqladmin -uroot -p"${pwd}" password '123456'
}
#mysqld守护脚本
MYSQL_DAEMON(){
	while :
	do
		Num=`ps aux |grep mysql |wc -l`
		[ "$Num" -lt 2 ] && /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS				
		sleep 5
	done
}
/usr/sbin/sshd -D &
File_Count=`ls /data/mysql3306 |wc -l`
[ "$File_Count" -eq 0 ] && INIT_MYSQL  
MYSQL_DAEMON

/etc/my.cnf配置文件

[mysqld]
datadir=/data/mysql3306
socket=/data/mysql3306/mysql.sock
symbolic-links=0
log-error=/data/mysql3306/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
user=mysql
[client]
socket=/data/mysql3306/mysql.sock

制作镜像:

mkdir /root/mysql
cd /root/mysql
把Dockfile文件,YUM配置文件,初始化脚步放入/root/mysql下
运行:docker build -t build:mysql .

运行容器并与宿主机时间同步:

docker run -it -v /data/mysql/my.cnf:/etc/my.cnf \
-v /data/mysql/data/:/data/mysql3306 -v /etc/localtime:/etc/localtime build:mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值