dockerfile 基于centos基础镜像构建mysql

构建准备

准备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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值