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 密碼

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章