[Java學(xué)習(xí)筆記]MySql的Dockerfile編寫

一莽红、什么是 Dockerfile骄酗?

Dockerfile 是一個用來構(gòu)建鏡像的文本文件稀余,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。
這里不講Dockerfile的指令趋翻,可自行百度睛琳。

二、創(chuàng)建MySql的Dockerfile

創(chuàng)建基于5.7.30版本的MySql踏烙,編寫Dockerfile文件具體如下:

#創(chuàng)建一個基于5.7.30版本的MySql
FROM mysql:5.7.30 

MAINTAINER don
EXPOSE 3306
LABEL version="0.1" description="Mysql服務(wù)器" by="don"

#設(shè)置免密登錄
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes

#將所需文件放到容器中
COPY /mysql/setup.sh /mysql/setup.sh #拷貝安裝腳本
COPY /mysql/create_db.sql /mysql/create_db.sql #創(chuàng)建數(shù)據(jù)庫
COPY /mysql/initial_data.sql /mysql/initial_data.sql #初始數(shù)據(jù)
COPY /mysql/privileges.sql /mysql/privileges.sql #設(shè)置密碼和權(quán)限

#設(shè)置容器啟動時執(zhí)行的命令
CMD ["sh", "/mysql/setup.sh"]

三师骗、構(gòu)建MySql的Dockerfile

使用docker build命令構(gòu)建剛才創(chuàng)建的Dockerfile文件,這里一定要注意最后面有個.讨惩,--no-cache=true表示禁用緩存辟癌。

docker build -f Dockerfile -t loamen-mysql:5.7 --no-cache=true .

如果是在Windows環(huán)境下構(gòu)建,可能會出現(xiàn)如下提示:

SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

該提示表示W(wǎng)indows構(gòu)建出來的擁有所有權(quán)限荐捻,如果不需要那么多可以使用-rwxr-xr-x修改黍少,如果不需要修改權(quán)限可以忽略。

執(zhí)行成功后可以通過docker images查看剛才生成的鏡像靴患,這里可以看到多了loamen-mysql的鏡像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
loamen-mysql        5.7                 4da21faea397        2 minutes ago       449MB
mysql               5.7.30              9cfcce23593a        4 weeks ago         448MB

四仍侥、運(yùn)行mysql容器

使用docker run命令來運(yùn)行容器,這里使用了-v掛載本地卷鸳君,但沒有使用-e MYSQL_ROOT_PASSWORD=123456來設(shè)置密碼农渊,是因為這里要使用空密碼創(chuàng)建初始數(shù)據(jù)。

docker run --privileged=true --name loamen-mysql -p 3306:3306 -v /my/mysql/data:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -v /my/mysql/logs:/var/log/mysql -d loamen-mysql:5.7

運(yùn)行好后使用docker ps來查看剛才創(chuàng)建的容器

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
bd285ecb867a        loamen-mysql:5.7    "docker-entrypoint.s…"   4 seconds ago       Up 4 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   loamen-mysql

五、其他操作

進(jìn)入容器bash砸紊,這里spaceon-mysql使用CONTAINER IDbd285ecb867a也可以传于。

docker exec -it spaceon-mysql /bin/bash

刪除容器,-f表示強(qiáng)制刪除醉顽,如果不強(qiáng)制刪除可以使用docker stop先停止容器沼溜,-v表示連本地卷一起刪除。

docker rm -f loamen-mysql -v

刪除鏡像

docker rmi loamen-mysql:5.7

六游添、腳本內(nèi)容

setup.sh初始化運(yùn)行腳本如下

#!/bin/bash
set -e

#查看mysql服務(wù)的狀態(tài)系草,方便調(diào)試,這條語句可以刪除
echo `service mysql status`

echo '1.啟動mysql...'
#啟動mysql
service mysql start
sleep 3

echo `service mysql status`
echo '2.創(chuàng)建數(shù)據(jù)庫...'
mysql < /mysql/create_db.sql
sleep 3
echo '2.創(chuàng)建數(shù)據(jù)庫完畢...'


echo '3.開始導(dǎo)入數(shù)據(jù)...'
mysql < /mysql/initial_data.sql
echo '3.導(dǎo)入數(shù)據(jù)完畢...'

echo '4.修改mysql權(quán)限...'
mysql < /mysql/privileges.sql
sleep 3
echo '4.權(quán)限修改完畢...'

#sleep 3
echo `service mysql status`
echo 'mysql容器啟動完畢,且數(shù)據(jù)導(dǎo)入成功'

tail -f /dev/null

create_db腳本內(nèi)容如下

USE mysql;
CREATE DATABASE IF NOT EXISTS spaceon_gms;

create_db.sql腳本內(nèi)容如下

--使用默認(rèn)數(shù)據(jù)庫
USE mysql;
-- 創(chuàng)建一個名為loamen_demo的數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS loamen_demo;

initial_data.sql腳本內(nèi)容如下

--使用默認(rèn)數(shù)據(jù)庫
--不要忘記初始化到哪個數(shù)據(jù)庫
USE loamen_demo;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

--其他數(shù)據(jù)庫初始化腳本
...

privileges.sql腳本內(nèi)容如下

use mysql;
SELECT host, user FROM user;

-- 將數(shù)據(jù)庫的權(quán)限授權(quán)給root用戶唆涝,密碼為123456:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

-- 刷新權(quán)限這一條命令一定要有:
flush privileges;

如果是Windows下創(chuàng)建的腳本文件找都,請使用utf-8編碼,如果到Linux中運(yùn)行依然亂碼廊酣,可以使用如下命令進(jìn)行轉(zhuǎn)換

sed -i "s/\r//" create_db.sql

七能耻、源碼

https://github.com/loamen/dockerfile-templates

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亡驰,隨后出現(xiàn)的幾起案子晓猛,更是在濱河造成了極大的恐慌,老刑警劉巖凡辱,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戒职,死亡現(xiàn)場離奇詭異,居然都是意外死亡煞茫,警方通過查閱死者的電腦和手機(jī)帕涌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來续徽,“玉大人,你說我怎么就攤上這事亲澡∏张ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵床绪,是天一觀的道長客情。 經(jīng)常有香客問我,道長癞己,這世上最難降的妖魔是什么膀斋? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮痹雅,結(jié)果婚禮上仰担,老公的妹妹穿的比我還像新娘。我一直安慰自己绩社,他們只是感情好摔蓝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布赂苗。 她就那樣靜靜地躺著,像睡著了一般贮尉。 火紅的嫁衣襯著肌膚如雪拌滋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天猜谚,我揣著相機(jī)與錄音败砂,去河邊找鬼。 笑死魏铅,一個胖子當(dāng)著我的面吹牛昌犹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沦零,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼祭隔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了路操?” 一聲冷哼從身側(cè)響起疾渴,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屯仗,沒想到半個月后搞坝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魁袜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年桩撮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峰弹。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡店量,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鞠呈,到底是詐尸還是另有隱情融师,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布蚁吝,位于F島的核電站旱爆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窘茁。R本人自食惡果不足惜怀伦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望山林。 院中可真熱鬧房待,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洼怔,卻和暖如春署惯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镣隶。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工极谊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人安岂。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓轻猖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親域那。 傳聞我的和親對象是個殘疾皇子咙边,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354