快速带你熟悉Docker----Dockerfile构建编译MYSQL5.7版本镜像

构建MYSQL5.7版本镜像

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

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

mkdir mysql
cd mysql/

vim run.sh
#!/bin/bash
systemctl enable mysqld


[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES



vim Dockerfile

FROM centos:7
MAINTAINER yun
RUN yum -y update
RUN yum -y install ncurses ncurses-devel bison cmake make gcc gcc-c++
RUN groupadd mysql
RUN useradd -M -s /sbin/nologin mysql -g mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
WORKDIR /usr/local/src/mysql-5.7.20
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make && make install
RUN chown -R mysql:mysql /usr/local/mysql
RUN rm -rf /etc/my.cnf
ADD my.cnf /etc/my.cnf
RUN chown mysql:mysql /etc/my.cnf
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
RUN /usr/local/mysql/bin/mysqld \
 --initialize-insecure \
 --user=mysql \
 --basedir=/usr/local/mysql \
 --datadir=/usr/local/mysql/data
EXPOSE 3306
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
ADD run.sh /run.sh
RUN sh /run.sh
CMD ["/usr/sbin/init"]

 2、创建mysql镜像

docker build -t mysql:yun .

3、创建容器

 docker run -d --privileged -P mysql:yun

4、要设置远程登录的权限和本地登录密码

4.1、docker ps -a 查看容器ID、端口

[root@server1 mysql]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
68ca73645c09        mysql:yun           "/usr/sbin/init"    6 minutes ago       Up 6 minutes        0.0.0.0:32768->3306/tcp   cranky_jang

4.2、进入容器

docker exec -it 68ca73645c09 /bin/bash
mysql

4.3、用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 密码

 

 

 


版权声明:本文为weixin_49228079原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。