Dockerfile制作MySQL编译安装的镜像

Dockerfile制作MySQL编译安装的镜像

Dockerfile制作mysql编译安装的镜像

  • 创建mysql文件夹
mkdir mysql
#创建mysql目录
  • 进入mysql的目录中
cd mysql/
#进入mysql的目录中
  • 编写dockerfile文件
vim Dockerfile
#编写dockerfile文件
FROM centos:7
#指定基础镜像
RUN yum -y update
#更新yum源
RUN yum -y install \
ncurses \
ncurses-devel \
bison \
cmake \
make \
gcc \
gcc-c++ 
#安装mysql依懒环境包
RUN useradd -s /sbin/nologin mysql
#创建运行用户
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
#将压缩包添加到/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
#cmake和编译
RUN chown -R mysql:mysql /usr/local/mysql/
#给予/usr/local/mysql的属主和属组
RUN rm -rf /etc/my.cnf
#删除原来的/etc/my.cnf文件
ADD my.cnf /etc
#将宿主机的my.cnf文件添加到/etc/目录下面
RUN chown mysql:mysql /etc/my.cnf
#设置权限
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#设置mysql的环境
WORKDIR /usr/local/mysql/
#指定当前工作路径
RUN bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#初始化数据库
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#将mysql的启动脚本复制到/usr/lib/systemd/system/目录下面,便于systemctl的管理
EXPOSE 3306
#开放容器的端口
RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" > /run.sh
#写mysql的启动脚本
RUN chmod 755 /run.sh
#给予权限
RUN sh /run.sh
#执行脚本
CMD ["init"]
#容器启动时执行
#CMD ["mysql_safe"]

vim my.cnf
[root@localhost mysql-5.7.20]#vi /etc/my.cnf
[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
#my.cnf启动脚本
  • 构建mysql:new的镜像
docker build -t centos:mysql .
  • 启动容器
docker run --name=mysql_server -d -P --privileged centos:mysql 
  • 提权
docker exec -it  镜像ID  /bin/bash
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值