學(xué)習(xí)Docker之使用docker-compose編配一整套服務(wù)

docker-compose.png

使用docker compose可以一鍵完成“一整套”服務(wù)的搭建也可以完成服務(wù)集群化部署。

這兩天在用python寫一個(gè)爬蟲喝噪,數(shù)據(jù)暫時(shí)保存在本地的mongodb數(shù)據(jù)庫础嫡,到部署的時(shí)候,發(fā)現(xiàn)線上的服務(wù)器沒有python環(huán)境和mongodb酝惧,這個(gè)時(shí)候立馬就想到了Docker榴鼎!
 最初的思路就是run一個(gè)mongodb容器,然后再把爬蟲程序構(gòu)建為鏡像并run起來晚唇。準(zhǔn)備動(dòng)手的時(shí)候突然腦海里閃過compose這個(gè)東東巫财,之前看docker書的時(shí)候正好看到有關(guān)compose的這一章,我花了十分鐘簡(jiǎn)單的過了一下哩陕,發(fā)現(xiàn)使用compose可以更加完美的實(shí)現(xiàn)一鍵構(gòu)建平项、部署與啟動(dòng)的過程赫舒,接下來就以python與mongodb組合為例

官網(wǎng)使用的是python與redis https://docs.docker.com/compose/gettingstarted/

先看一下python程序

from flask import Flask
from pymongo import MongoClient
import random
app = Flask(__name__)
client = MongoClient('mongodb')
db=client['datas']

@app.route('/')
def hello():
    db.col.insert({"hits":random.random()})
    return 'Hello World! I have been seen %s times.' % (db.col.count())

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

使用flask做python的web服務(wù)框架,每請(qǐng)求一次就會(huì)在mongodb的datas數(shù)據(jù)庫插入一個(gè)文檔闽瓢,然后返回datas下面的總數(shù)接癌,非常簡(jiǎn)單。

然后需要把python所依賴的模塊抽取出來扣讼,這里推薦使用pipreqs
安裝pipreqs

pip install pipreqs

然后執(zhí)行腳本

# 我直接在項(xiàng)目的根目錄下執(zhí)行缺猛,當(dāng)然也可以帶上路徑 如 pipreqs /project/path
pipreqs . 

生成的requirements如下

pymongo==3.6.1
Flask==0.12.2

接下來需要編寫Dockerfile

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python","app.py"]

這里用的是python 2.7版本

然后定位到code目錄下;

將requirements.txt下依賴的模塊一并安裝;

最后執(zhí)行app.py

如果是第一次接觸Docker那就以往文章了解下~
學(xué)習(xí)Docker之Dockerfile的命令
學(xué)習(xí)Docker之10張圖帶你深入理解Docker容器和鏡像
學(xué)習(xí)Docker之Docker、容器和鏡像的簡(jiǎn)介和常用命令
學(xué)習(xí)Docker之Docker初體驗(yàn)---SpringBoot集成Docker的部署椭符、發(fā)布與應(yīng)用

緊接著開始docker-compose yml 命令與寫法跟Dockerfile類似荔燎,很容易理解,如下:

version: '2'
services:
    web:
        build: .
        ports:
            - "5000:5000"
    mongodb:
        image: mongo
        ports:
            - "27017:27017"   

這里要注意一下mongodb销钝,就是python中使用的‘域名’

可以這樣理解有咨,web服務(wù)和mongodb服務(wù)都在同一個(gè)局域網(wǎng),然后mongodb服務(wù)的ip對(duì)應(yīng)域名就是“mongodb”

docker-compose 一般需要獨(dú)自安裝曙搬,我這里使用的是ubuntu摔吏,直接使用apt install docker-compose,當(dāng)然也可以按照官網(wǎng)安裝

最終目錄為

.
├── app.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt

執(zhí)行命令docker-compose up

經(jīng)過漫長(zhǎng)的構(gòu)建,docker會(huì)自動(dòng)將其啟動(dòng)纵装,整個(gè)過程如下

到這里使用docker-compose編配一個(gè)web服務(wù)和一個(gè)數(shù)據(jù)服務(wù)就到此結(jié)束了!

使用compose我們可以把一整套的項(xiàng)目包括應(yīng)用征讲、數(shù)據(jù)存儲(chǔ)、消息中間件等等的安裝橡娄、部署與啟動(dòng)整合在一個(gè)yml配置中诗箍,真的可以達(dá)到一鍵啟動(dòng)應(yīng)用!M彀Α滤祖!

CSDN:http://blog.csdn.net/qqhjqs?viewmode=list
博客:http://vector4wang.tk/
簡(jiǎn)書:http://www.reibang.com/u/223a1314e818
Github:https://github.com/vector4wang
Gitee:https://gitee.com/backwxc
如果感覺有幫助的話,點(diǎn)個(gè)贊哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓶籽,一起剝皮案震驚了整個(gè)濱河市匠童,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塑顺,老刑警劉巖汤求,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異严拒,居然都是意外死亡扬绪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門裤唠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挤牛,“玉大人,你說我怎么就攤上這事种蘸∧垢埃” “怎么了竞膳?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)竣蹦。 經(jīng)常有香客問我顶猜,道長(zhǎng)沧奴,這世上最難降的妖魔是什么痘括? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮滔吠,結(jié)果婚禮上纲菌,老公的妹妹穿的比我還像新娘。我一直安慰自己疮绷,他們只是感情好翰舌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冬骚,像睡著了一般椅贱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上只冻,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天庇麦,我揣著相機(jī)與錄音,去河邊找鬼喜德。 笑死山橄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舍悯。 我是一名探鬼主播航棱,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼萌衬!你這毒婦竟也來了饮醇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤秕豫,失蹤者是張志新(化名)和其女友劉穎朴艰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馁蒂,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呵晚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沫屡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饵隙。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沮脖,靈堂內(nèi)的尸體忽然破棺而出金矛,到底是詐尸還是另有隱情芯急,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布驶俊,位于F島的核電站娶耍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饼酿。R本人自食惡果不足惜榕酒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望故俐。 院中可真熱鬧想鹰,春花似錦、人聲如沸药版。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽槽片。三九已至何缓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間还栓,已是汗流浹背碌廓。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝙云,地道東北人氓皱。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像勃刨,于是被迫代替她去往敵國(guó)和親波材。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件身隐?Google Compute Engi...
    ahohoho閱讀 15,532評(píng)論 15 147
  • 《Docker從入門到實(shí)踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,375評(píng)論 1 39
  • 一 廷区、什么是 Docker Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國(guó)...
    Blazzer閱讀 3,136評(píng)論 0 13
  • 關(guān)注更少,而非更多贾铝; 關(guān)注不變隙轻,而非變化; 關(guān)注技能垢揩,而非裝備玖绿。 001:專,精叁巨,在一個(gè)擅長(zhǎng)的領(lǐng)域做到第一就好了斑匪。...
    約梵閱讀 227評(píng)論 0 1
  • 生存和夢(mèng)想真的很煩人…………,不知道怎么辦? To live and to dream are really tr...
    有一套閱讀 112評(píng)論 0 0