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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql的dockerfile_Dockerfile构建MySQL

發(fā)布時間:2025/5/22 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的dockerfile_Dockerfile构建MySQL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

構(gòu)建的原理:

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

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

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

查看整個構(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安裝的包,當然如果你網(wǎng)絡(luò)好,只需要配置repo就行,然后將Dockerfile中的安裝rpm的過程換成替換repo就ok

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

[root@docker mysql]# catDockerfile

FROM centos

MAINTAINER json_hc@163.com

COPY 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

RUNyum remove mysql-libs -y

RUNyum -y install *.rpm

ADD business.sql/root/business.sql

ADD server.cnf/etc/my.cnf.d/server.cnf

ADD setup.sh /root/setup.shRUNyumclean all

RUNchmod +x /root/setup.shEXPOSE3306CMD ["/root/setup.sh"]

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

2、將下載好的rpm包copy到鏡像中,然后進行安裝

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

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

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

[root@docker mysql]# catserver.cnf

[mysqld]

bind-address=0.0.0.0console=1general_log=1general_log_file=/dev/stdout

#log_error=/dev/stderr

collation-server=utf8_unicode_ci

character-set-server=utf8

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

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

[root@docker mysql]# cat setup.sh#!/bin/sh

chown -R mysql:mysql /var/lib/mysql

mysql_install_db--user=mysql > /dev/nullmysqld_safe--user=mysql &

sleep 5mysql< /root/business.sqlsleep 5

ps -wef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9mysqld_safe--user=mysql

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

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

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

[root@docker mysql]# catbusiness.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賬號的密碼

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

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

總結(jié)

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

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