Docker----Dockerfile构建编译MYSQL5.6版本镜像

构建MYSQL5.6版本镜像

在网上看了好多mysql5.6版本镜像的构建,基本上都是使用Docker官方源下载构建的。这里我想使用编译的方法搭建。
当然个人觉的官方提供的Mysql:5.6源也不错,体积小,这个搭建完成后占用空间5个多G。
下面展示我的Dockerfile文件

  • 1、创建目录,在目录下编写Dockerfile文件,存放相关的软件包
mkdir /mysql
cd /mysql

vi Dockerfile
FROM centos:7
MAINTAINER this is mysql-5.6

#更新yum源
RUN yum -y update

#安装环境依赖包
RUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
RUN yum -y install ncurses ncurses-devel bison cmake autoconf

#解压mysql包
ADD mysql-5.6.26.tar.gz /opt/

#创建mysql系统用户
RUN useradd -s /sbin/nologin mysql

#进入源码包,执行cmake文件,指定工作目录
WORKDIR /opt/mysql-5.6.26
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   

#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/

#配置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 '46s/basedir=/basedir=\/usr\/local\/mysql/' /etc/init.d/mysqld  
RUN sed -i '46s/datadir=/basedir=\/home\/mysql/' /etc/init.d/mysqld
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock

#启动方式我在这里用的mysqld_safe命令,使用mysql-server启动服务没有成功。
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]

搭建这个Mysql5.6版本镜像花费了我较长时间,因为初次接触Dockerfile,玩的不是太熟练,调试的过程中需要等待大概20分钟。mysql-5.7的编译安装花费时间更长。

  • 2、创建mysql镜像
docker build -t mysql.new .
  • 3、创建容器
docker run -d mysql.new -P --privileged   #使用root用户
  • 4、要设置远程登录的权限和本地登录密码。

docker ps -a 查看容器ID、端口
在这里插入图片描述

#进入容器
docker exec -it 533612e70f2b /bin/bash

#用grant命令授权
grant all privileges on *.* to 'root'@'%' identified by '123';    #远程可访问数据库使用123密码
grant all privileges on *.* to 'root'@'localhost' identified by '123';   #本地登录使用123密码
#一定记得刷新权限,不然之前的设置不生效
flush privileges;  
  • 5、验证,我用另一台装有mysql的虚拟机访问测试
格式:mysql -h mysql容器的IP地址 -P 端口号 -u 用户 -p 密码

在这里插入图片描述

原创文章 112 获赞 44 访问量 9994

猜你喜欢

转载自blog.csdn.net/qq_28361541/article/details/105669749