日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Dockerfile构建MySQL

發(fā)布時(shí)間:2024/1/17 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dockerfile构建MySQL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

利用Dockerfile自定義構(gòu)建MySQL服務(wù)折騰了幾天,一直在啟動(dòng)服務(wù)上出現(xiàn)錯(cuò)誤,現(xiàn)在終于解決了該問題,這里進(jìn)行記錄一下

本文參考http://iamdavidxie.com/2014/07/21/create-a-mariadb-service-on-centos-with-docker/

此次Dockerfile文件中以centos:latest為基礎(chǔ)鏡像,在此基礎(chǔ)上進(jìn)行安裝MySQL服務(wù)(這里以mariadb為例)

構(gòu)建的原理:

1、利用Dockerfile進(jìn)行安裝MySQL服務(wù)(yum安裝或者以rpm包安裝(由于網(wǎng)絡(luò)問題可將需要安裝的包下載到本地進(jìn)行安裝))

2、編寫shell腳本,將安裝好的mariadb進(jìn)行重新初始化,并啟動(dòng)mariadb,執(zhí)行需要的sql腳本,關(guān)閉mariadb,最后通過前臺(tái)開啟服務(wù)

3、由于MySQL5.6和MySQL5.7的初始化方式不一樣,本文介紹的適用于MySQL5.6(后面會(huì)有5.7的案例)

?

查看整個(gè)構(gòu)建目錄:

[root@docker mysql]# tree . ├── business.sql ├── Dockerfile ├── MariaDB-10.0.33-centos7-x86_64-client.rpm ├── MariaDB-10.0.33-centos7-x86_64-common.rpm ├── MariaDB-10.0.33-centos7-x86_64-compat.rpm ├── MariaDB-10.0.33-centos7-x86_64-server.rpm ├── mariadb.repo ├── server.cnf ├── setup.sh └── setup.sh.bak

目錄中有下載好的mariadb安裝的包,當(dāng)然如果你網(wǎng)絡(luò)好,只需要配置repo就行,然后將Dockerfile中的安裝rpm的過程換成替換repo就ok

下面介紹Dockerfile文件,并介紹構(gòu)建過程執(zhí)行了什么:

[root@docker mysql]# cat Dockerfile FROM centosMAINTAINER json_hc@163.comCOPY MariaDB-10.0.33-centos7-x86_64-client.rpm /root/MariaDB-10.0.33-centos7-x86_64-client.rpm COPY MariaDB-10.0.33-centos7-x86_64-common.rpm /root/MariaDB-10.0.33-centos7-x86_64-common.rpm COPY MariaDB-10.0.33-centos7-x86_64-compat.rpm /root/MariaDB-10.0.33-centos7-x86_64-compat.rpm COPY MariaDB-10.0.33-centos7-x86_64-server.rpm /root/MariaDB-10.0.33-centos7-x86_64-server.rpm WORKDIR /root RUN yum remove mysql-libs -y RUN yum -y install *.rpm ADD business.sql /root/business.sql ADD server.cnf /etc/my.cnf.d/server.cnf ADD setup.sh /root/setup.shRUN yum clean all RUN chmod +x /root/setup.sh EXPOSE 3306CMD ["/root/setup.sh"]

1、構(gòu)建使用的基礎(chǔ)鏡像為centos:latest

2、將下載好的rpm包c(diǎn)opy到鏡像中,然后進(jìn)行安裝

3、將需要執(zhí)行的sql、配置文件,最后執(zhí)行的shell腳本也copy到鏡像中

在執(zhí)行setup.sh腳本之前mariadb服務(wù)已經(jīng)安裝完畢,基本的數(shù)據(jù)目錄還是/var/lib/mysql

將配置文件拷貝到了鏡像中,查看配置文件:

[root@docker mysql]# cat server.cnf [mysqld] bind-address=0.0.0.0 console=1 general_log=1 general_log_file=/dev/stdout #log_error=/dev/stderr collation-server=utf8_unicode_ci character-set-server=utf8

里面的內(nèi)容可以進(jìn)行修改或者添加更多

查看setup.sh的內(nèi)容:

[root@docker mysql]# cat setup.sh #!/bin/sh chown -R mysql:mysql /var/lib/mysqlmysql_install_db --user=mysql > /dev/nullmysqld_safe --user=mysql &sleep 5mysql < /root/business.sqlsleep 5ps -wef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9mysqld_safe --user=mysql

由于需要重新將安裝好的mariadb服務(wù)進(jìn)行初始化,所以避免出錯(cuò)可以將數(shù)據(jù)目錄進(jìn)行權(quán)限授予

MySQL5.6的初始化為mysql_install_db加上一些參數(shù)

初始化數(shù)據(jù)庫后,后臺(tái)開啟mariadb服務(wù),然后將sql進(jìn)行執(zhí)行:

[root@docker mysql]# cat business.sql create database wordpress DEFAULT CHARACTER SET utf8;USE mysql; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;UPDATE user SET password=PASSWORD("root") WHERE user='root'; FLUSH PRIVILEGES;

sql內(nèi)容就是創(chuàng)建的庫和設(shè)置root賬號(hào)的密碼

sql執(zhí)行完成后setup.sh腳本后面就是將mariadb進(jìn)程殺掉,最后由前臺(tái)運(yùn)行mariadb服務(wù),如果在啟動(dòng)容器中遇見了錯(cuò)誤,請(qǐng)利用docker logs container_name/container_id

進(jìn)行查看,根據(jù)錯(cuò)誤提示進(jìn)行解決

自定義構(gòu)建MySQL服務(wù)的項(xiàng)目可以在github查看:https://github.com/jsonhc/docker_project/tree/master/docker_dockerfile/lnmp/mysql

總結(jié)

以上是生活随笔為你收集整理的Dockerfile构建MySQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。