使用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è)贊哦~