docker搭建web服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器通信

1--說(shuō)明:

在使用docker搭建web服務(wù)時(shí)我們會(huì)將web服務(wù)于數(shù)據(jù)庫(kù)服務(wù)分別放在不同的鏡像中崇棠,以此將數(shù)據(jù)庫(kù)與web服務(wù)解耦合涯肩。在本文中我為大家介紹docker中利用 --link通信方式使得web服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器之間建立連接。在我的實(shí)驗(yàn)環(huán)境中數(shù)據(jù)庫(kù)服務(wù)器上安裝了mysql和redis兩種數(shù)據(jù)庫(kù)呛占。在服務(wù)器中用的Apache和PHP的開發(fā)環(huán)境并用nginx負(fù)責(zé)負(fù)載均衡。


2--數(shù)據(jù)庫(kù)服務(wù)器的搭建:

建議使用編譯的方式安裝mysql和redis。

其中mysql的安裝教程可以參考下面這篇文章:

centos編譯安裝mysql

需要注意文章底部關(guān)于初始化mysql賬號(hào)這部分否則web服務(wù)器連接數(shù)據(jù)庫(kù)時(shí)會(huì)帶來(lái)問題肴茄。

redis的編譯安裝參考下面這篇文章:

編譯安裝redis

我的安裝環(huán)境是centos 6.7,在我的安裝環(huán)境中上面兩篇文章可以完美安裝但指。


內(nèi)核版本

到這里為止我們已經(jīng)解決了數(shù)據(jù)庫(kù)服務(wù)器的docker 鏡像制作寡痰。

注意事項(xiàng):

在編譯安裝mysql時(shí)需要將mysql解壓后的my*cnf文件拷貝到/etc/目錄下

通過(guò)find / -name my*cnf就行查找我們可以看到下圖


find / -name my*cnf查找結(jié)果

隨便選一個(gè)my*.cnf文件我選的時(shí) my-large.cnf執(zhí)行

cp /usr/local/src/mysql-5.5.10/support-files/my-large.cnf /etc/my.cnf ? ?即可

這時(shí)候我們?nèi)バ薷?etc/my.cnf 在[mysqld]添加下面一句

skip-name-resolve

添加這句的原因是避免web服務(wù)器端的mysql客戶端在連接數(shù)據(jù)庫(kù)的時(shí)候無(wú)法解析hostname錯(cuò)誤抗楔。

到現(xiàn)在為止我們已經(jīng)建立好了mysql和redis的基礎(chǔ)鏡像。

然后我們將這個(gè)鏡像進(jìn)行保存:

sudo docker ps查找鏡像然后sudo docker commit保存鏡像拦坠。這部分操作請(qǐng)讀者自行Google解決连躏。

回到宿主機(jī)上后我們需要利用Dockerfile來(lái)建立我們最終的數(shù)據(jù)庫(kù)鏡像。之所以開始不用Dockerfile一步建立鏡像主要是我們采用編譯安裝mysql和redis可能會(huì)出錯(cuò)贞滨。

先mkdir一個(gè)目錄出來(lái)接著進(jìn)入目錄執(zhí)行 vi Dockerfile在文件中寫下一下內(nèi)容:


Dockerfile內(nèi)容


這里主要的是最后兩句入热,添加這兩句的原因是開放我們的mysql和redis服務(wù)端口使得其他主機(jī)能夠連接我們的數(shù)據(jù)庫(kù)服務(wù)。

接著sudo docker build文件建立鏡像疲迂。

到此為止我們數(shù)據(jù)庫(kù)鏡像已經(jīng)制作完成才顿。


3--web服務(wù)器鏡像

在搭建web服務(wù)器時(shí)先安裝httpd通過(guò)

yum install -y?httpd即可

然后我們還需要安裝mysql客戶端通過(guò)

yum install -y mysql安裝mysql客戶端我們還需要安裝mysql-devel因?yàn)樵诤竺嫖覀冃枰惭bphp的mysql擴(kuò)展缺少這個(gè)庫(kù)會(huì)導(dǎo)致編譯不通過(guò)。

安裝完mysql客戶端后還需要安裝redis這里安裝redis是因?yàn)槲覀冊(cè)谠L問數(shù)據(jù)庫(kù)服務(wù)器redis時(shí)需要本地的redis-cli客戶端尤蒿,redis的安裝教程上面貼了連接郑气。

安裝nginx以及nginx做代理服務(wù)器可以參考我另外兩篇文章

編譯安裝nginx

nginx負(fù)載均衡

最后我們要進(jìn)行php的安裝。下面鏈接可以完美的進(jìn)行php的編譯安裝

編譯安裝php

編譯安裝php我能告訴你的就是耐心了腰池。

接下來(lái)我們需要安裝php的mysql擴(kuò)展和redis擴(kuò)展再貼兩篇文章:

安裝php的mysql擴(kuò)展

需要注意的是在安裝擴(kuò)展時(shí)有時(shí)會(huì)提示我們安裝autoconf這時(shí)我們直接執(zhí)行

yum install -y autoconf?

這個(gè)問題Google的答案是缺少一個(gè)依賴庫(kù)的問題但是你要是yum那個(gè)依賴庫(kù)則會(huì)自動(dòng)給你安裝php然后悲劇的事情發(fā)生了yum安裝下的php會(huì)替代掉你本來(lái)安裝的php尾组。而yum安裝下來(lái)的一般是5.3的版本。

接著我們安裝redis擴(kuò)展:

安裝PHP的redis擴(kuò)展

到此我們web服務(wù)器鏡像制作完成示弓,docker commit這個(gè)容器即可


4--通過(guò)--link使得兩個(gè)容器間能夠通信

先啟動(dòng)數(shù)據(jù)庫(kù)鏡像

sudo docker run -i -t --name db -P databasemirrorid

sudo docker run -i -t --name web --link db:webdb -P webmirrorid

這時(shí)候我們就能夠在web服務(wù)器容器中操作mysql和redis了

通過(guò)redis-cli -h db直接連接數(shù)據(jù)庫(kù)服務(wù)器中的redis服務(wù)

通過(guò)mysql -h db -uroot -ppassword直接訪問數(shù)據(jù)庫(kù)服務(wù)器中的mysql服務(wù)讳侨。


5--我在安裝時(shí)需要的坑

(1)開始時(shí)我未用dockerfile來(lái)制作數(shù)據(jù)庫(kù)鏡像,直接選擇在運(yùn)行服務(wù)器鏡像的時(shí)候通過(guò)指定docker run --expose參數(shù)來(lái)開放端口奏属,但是找了半天docker --expose貌似不能開放兩個(gè)及以上單獨(dú)的端口可以開放某一段端口例如 --expose n-m開放n到m這一段的端口跨跨,我要開放3306和6379端口的話就要--expose 3306-6379一旦加入這個(gè)參數(shù)基本就宣告主機(jī)將會(huì)卡死,通過(guò)sudo ps -aux|grep docker可以看到后臺(tái)啟動(dòng)了大量的docker進(jìn)程囱皿,具體可能跟docker的端口綁定有關(guān)勇婴。

(2)在搭建web服務(wù)器是PHP需要與mysql客戶端連接,這時(shí)需要要安裝mysql的擴(kuò)展嘱腥,由于我們時(shí)yum安裝的mysql客戶端缺少mysql-devel依賴庫(kù)耕渴,導(dǎo)致編譯時(shí)一直報(bào)錯(cuò),然而報(bào)錯(cuò)也未能提示錯(cuò)誤是由于缺少這個(gè)庫(kù)齿兔,網(wǎng)上找不到靠譜的答案橱脸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市分苇,隨后出現(xiàn)的幾起案子添诉,更是在濱河造成了極大的恐慌,老刑警劉巖组砚,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吻商,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡糟红,警方通過(guò)查閱死者的電腦和手機(jī)艾帐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門乌叶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人柒爸,你說(shuō)我怎么就攤上這事准浴。” “怎么了捎稚?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵乐横,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我今野,道長(zhǎng)葡公,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任条霜,我火速辦了婚禮催什,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宰睡。我一直安慰自己蒲凶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布拆内。 她就那樣靜靜地躺著旋圆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪麸恍。 梳的紋絲不亂的頭發(fā)上灵巧,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音抹沪,去河邊找鬼孩等。 笑死,一個(gè)胖子當(dāng)著我的面吹牛采够,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冰垄,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蹬癌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了虹茶?” 一聲冷哼從身側(cè)響起逝薪,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝴罪,沒想到半個(gè)月后董济,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡要门,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年虏肾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廓啊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡封豪,死狀恐怖谴轮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吹埠,我是刑警寧澤第步,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站缘琅,受9級(jí)特大地震影響粘都,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刷袍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一翩隧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧做个,春花似錦鸽心、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至太闺,卻和暖如春糯景,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背省骂。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工蟀淮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钞澳。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓怠惶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親轧粟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子策治,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,508評(píng)論 15 147
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理兰吟,服務(wù)發(fā)現(xiàn)通惫,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • Composer Repositories Composer源 Firegento - Magento模塊Comp...
    零一間閱讀 3,956評(píng)論 1 66
  • 還記得這個(gè)光著腳混蔼,笨拙得拿著筆的圣馬太嗎履腋?天使握著他長(zhǎng)滿繭的右手,上帝的圣諭就在這個(gè)手工勞動(dòng)者的筆端流淌出來(lái)了。當(dāng)...
    c5de959d631b閱讀 522評(píng)論 0 4
  • 2017.9.21 星期四 晴 今天遵湖,很多家長(zhǎng)早早來(lái)到教室悔政,聽同學(xué)們的早讀。我因有事奄侠,時(shí)間來(lái)不及卓箫,只在李老師...
    暖與希望閱讀 269評(píng)論 0 2