构建准备
准备mysql安装包和boost插件包,自行百度查询下载
mysql国内下载镜像地址(这个下载速度更快):http://uni.mirrors.163.com/mysql/Downloads/MySQL-5.7/
编写dockerfile
构建文件时注意当前目录与mysql安装包处于同一目录下
FROM centos:7.7.1908
MAINTAINER This is MySQL
#更新yum源安装软件包
RUN yum -y update && yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ncurses ncurses-devel bison cmake autoconf
#解压mysql包
ADD mysql-5.7.37.tar.gz /opt/
COPY mysql_install_db /usr/local/mysql/scripts/
#创建系统用户
RUN useradd -s /sbin/nologin mysql
#解压boost
ADD boost_1_59_0.tar.gz /usr/local/boost
#安装openssl-devel
RUN yum -y install openssl-devel
#进入源码包,执行cmake文件,指定工作目录
WORKDIR /opt/mysql-5.7.37
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DWITH_BOOST=/usr/local/boost \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
#make编译
RUN make && make install
#复制默认配置文件到/etc目录下
#RUN cp -f support-files/my-default.cnf /etc/my.cnf
RUN mkdir -p /usr/local/mysql/
RUN chown -R mysql:mysql /usr/local/mysql/
RUN yum -y install libaio
#配置mysql环境变量
ENV PATH /usr/local/mysql/bin:$PATH
#初始化数据库
RUN /usr/local/mysql/bin/mysqld \
--initialize \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#暴露服务端口
EXPOSE 3306
#启动
RUN cp support-files/mysql.server /etc/init.d/mysqld
RUN chmod 755 /etc/init.d/mysqld
RUN sed -i '/^basedir=/s#basedir=#basedir=/usr/local/mysql#' /etc/init.d/mysqld
RUN sed -i '/^datadir=/s#datadir=#basedir=/home/mysql#' /etc/init.d/mysqld
#建立软链接
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]
构建镜像
# -t 名字:版本
docker build -t centos-mysql .
默认密码
运行容器
sudo docker run --name centos-mysql -dit -p 3388:3306 --privileged centos:mysql /bin/bash
# 进入容器
docker exec -it 容器id /bin/bash
连接数据库
进入容器后执行
mysql -uroot -p