博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dockerfile构建编译MYSQL-5.6、MYSQL-5.7镜像
阅读量:2134 次
发布时间:2019-04-30

本文共 4163 字,大约阅读时间需要 13 分钟。

目录

构建MYSQL5.6版本镜像

FROM centos:7MAINTAINER this is mysql-5.6#更新yum源RUN yum -y update#安装环境依赖包RUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perlRUN yum -y install ncurses ncurses-devel bison cmake autoconf#解压mysql包ADD mysql-5.6.36.tar.gz /opt/#创建mysql系统用户RUN useradd -s /sbin/nologin mysql#进入源码包,执行cmake文件,指定工作目录WORKDIR /opt/mysql-5.6.36RUN 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.cnfRUN 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/mysqldRUN chmod 755 /etc/init.d/mysqldRUN sed -i '46s/basedir=/basedir=\/usr\/local\/mysql/' /etc/init.d/mysqldRUN sed -i '46s/datadir=/basedir=\/home\/mysql/' /etc/init.d/mysqldRUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock#启动方式我在这里用的mysqld_safe命令,使用mysql-server启动服务没有成功。ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]

2、创建mysql镜像和容器

docker build -t mysql.new .docker run -d mysql.new -P --privileged   #使用root用户

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

docker ps -a   # 查看容器ID、端口#进入容器docker exec -it 1e2d84978d2f /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;

4、验证,我用另一台装有mysql的虚拟机访问测试

格式:mysql -h mysql容器的IP地址 -P 端口号 -u 用户 -p 密码

在这里插入图片描述

构建MYSQL5.7版本镜像

[root@server1 ~]# mkdir /mysql-5.7[root@server1 ~]# cd /mysql-5.7[root@server1 mysql-5.7]# lsDockerfile  my.cnf  mysql-boost-5.7.20.tar.gz
vim DockerfileFROM centos:7MAINTAINER This is mysqlRUN yum -y updateRUN yum install -y gcc gcc-c++ cmake ncurses ncurses-devel bison make#添加用户RUN useradd -s /sbin/nologin mysqlADD mysql-boost-5.7.20.tar.gz /usr/localWORKDIR /usr/local/mysql-5.7.20RUN 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=1RUN make -j4 && make installRUN chown -R mysql:mysql /usr/local/mysql#删除原有的配置文件RUN rm -rf /etc/my.cnf#添加新的配置文件ADD my.cnf /etc/my.cnf#设置环境变量ENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATHWORKDIR /usr/local/mysql/#初始化数据库RUN bin/mysqld \--initialize-insecure \--user=mysql \--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/dataRUN cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/EXPOSE 3306#配置启动脚本RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" > /run.shRUN chmod +x /run.shRUN sh /run.shCMD ["init"]
vim my.cnf[client]port=3306default-character-set=utf8socket=/usr/local/mysql/mysql.sock[mysql]port=3306default-character-set=utf8socket=/usr/local/mysql/mysql.sock[mysqld]user=mysqlbasedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport=3306character_set_server=utf8pid-file=/usr/local/mysql/mysql.pidsocket=/usr/local/mysql/mysql.sockserver-id=1sql_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

2、创建mysql镜像和容器

docker build -t mysql-5.7:new .docker run -d mysql-5.7:new -P --privileged   #使用root用户

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

docker ps -a   # 查看容器ID、端口#进入容器docker exec -it b82f9ccdb234 /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;

4、验证,我用另一台装有mysql的虚拟机访问测试

格式:mysql -h mysql容器的IP地址 -P 端口号 -u 用户 -p 密码

在这里插入图片描述

转载地址:http://xrkgf.baihongyu.com/

你可能感兴趣的文章
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-26》15.三数之和
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-40》64.最小路径和
查看>>
Leetcode C++《热题 Hot 100-41》75.颜色分类
查看>>
Leetcode C++《热题 Hot 100-42》78.子集
查看>>