基于centos基础镜像构建mysql 镜像

版本:mysql-5.6.51 源码安装

先看dockerfile 文件内容
FROM centos_jdk8:1.0 # 该镜像是自己构建的带有jdk的centos镜像
MAINTAINER chenjie
RUN yum -y update && yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ncurses ncurses-devel bison cmake autoconf && yum -y install openssl-devel # 执行yum 安装命令 在执行dockfile文件的时候 发现报警提示 缺少 openssl-devel,又装了一个 openssl-devel
ADD mysql-5.6.51.tar.gz /opt/ #将下载下来的 mysql文件 解压到 docker 下的 /opt 文件下中
RUN useradd -s /sbin/nologin mysql
WORKDIR /opt/mysql-5.6.51 #使用cmake 安装mysql
RUN cmake \ 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
RUN make && make install
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/
ENV PATH /usr/local/mysql/bin:$PATH # 设置环境变量
RUN /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
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"]
mysql 源码安装包 下载地址:

https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.51.tar.gz

build dockerfile 文件:

docker build -t 镜像名称:镜像版本 . -f Dockerfile文件

build dockerfile 文件之后 使用 docker ps -a 查看镜像文件

微信截图_20210127100932.png

启动mysql 并做宿主机的端口映射

docker run -p 3306:3306 --name mysql -d 镜像名称:镜像版本

启动成功之后就可以看到 mysql 的虚拟机了:

image.png

进入到mysql 虚拟机中并 修改任何ip 都可以连接mysql

1 进入到myql虚拟机中:docker exec -it 容器id /bin/bash
2 进入mysql: mysql -u root -p (第一次进入mysql 是没有密码的)
3 授权操作: grant all privileges on . to 'root'@'%' identified by '123456';
grant all privileges on . to 'root'@'localhost' identified by '123456';
4 刷新授权: flush privileges;

你可能感兴趣的:(基于centos基础镜像构建mysql 镜像)