成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

Berwin / 2754人閱讀

摘要:背景手里有一個(gè)項(xiàng)目,代碼按照前端代碼庫(kù)后端代碼庫(kù)分別在上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼化,用于持續(xù)部署。

背景

手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼docker化,用于持續(xù)部署。

技術(shù)架構(gòu)

原來(lái)的代碼使用gunicorn+gevent+supervisor+flask+DB的架構(gòu);具體的細(xì)節(jié)如下:

本地服務(wù)器搭建了一個(gè)nginx域名服務(wù)器,里面區(qū)分PC端還是手機(jī)端;

訪問(wèn)域名通過(guò)nginx,訪問(wèn)前端靜態(tài)頁(yè)面的內(nèi)容

靜態(tài)頁(yè)面中加載指定地址的數(shù)據(jù),提供數(shù)據(jù)的服務(wù)由flask后端提供接口;

后端提供的接口,通過(guò)訪問(wèn)redis緩存和mongodb數(shù)據(jù)庫(kù),返回相應(yīng)的數(shù)據(jù);

整改方案

首先我們需要將DB和Flask App拆分開(kāi),使用supervisor將包括DB在哪的所有進(jìn)程,都控制在一起,所以我們需要經(jīng)他們分開(kāi):

直接使用docker pull 下載指定版本的redis和mongo就可以

構(gòu)建flask app的dockerfile

在dockerfile中,我們決定不實(shí)用supervisor,具體原因下面說(shuō);

由于之前的supervisor是安裝在centos中的,我們代碼使用python3,所以在centos上裝了一個(gè)虛擬環(huán)境,用于跑flask代碼,所以我們使用python:3.6-slim為基礎(chǔ)鏡像;在使用apline鏡像的時(shí)候,不能安裝一些依賴,包括supervisor,所以我選擇了slim,后面拆分的時(shí)候因?yàn)閟upervisor在slim中,每次啟動(dòng)都有問(wèn)題,所以我放棄了supervisor,這樣你也可以使用apline,但是我還是保持了slim;

FROM python:3.6-slim

COPY . /app

WORKDIR /app

RUN pip install -i https://pypi.douban.com/simple -r requirements.txt


EXPOSE 5000

ENV FLASK_APP=manage.py

上面構(gòu)建的是整個(gè)flask項(xiàng)目的鏡像,包括寫數(shù)據(jù)庫(kù)的進(jìn)程(可獨(dú)立運(yùn)行),還有一個(gè)廣播的進(jìn)程,最后就是flask本身的進(jìn)程;我們已經(jīng)將數(shù)據(jù)庫(kù)獨(dú)立出來(lái),所以在原來(lái)的代碼中需要將訪問(wèn)數(shù)據(jù)庫(kù)的URL host修改對(duì)應(yīng)的IP,也可以使用--link,直接指定contianer的名字代替host,具體原理沒(méi)有詳細(xì)研究。(后來(lái)發(fā)現(xiàn),在平滑升級(jí)的時(shí)候還是需要將DB對(duì)應(yīng)的端口暴露給宿主機(jī),本來(lái)使用--link是不需要的);

flask鏡像包含了寫數(shù)據(jù)庫(kù),flask本身(可以理解為讀數(shù)據(jù)庫(kù))和廣播功能,我們?cè)趩?dòng)鏡像的時(shí)候,需要啟動(dòng)這三個(gè)進(jìn)程,分別是: flask run --host 0.0.0.0; flask wdb; flask broadcast;

為了保持代碼的完整,我們不使用flask run命令,而使用原來(lái)的gunicorn+gevent的方式執(zhí)行代碼;

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27857.html

相關(guān)文章

  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:背景手里有一個(gè)項(xiàng)目,代碼按照前端代碼庫(kù)后端代碼庫(kù)分別在上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼化,用于持續(xù)部署。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是...

    leon 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:背景手里有一個(gè)項(xiàng)目,代碼按照前端代碼庫(kù)后端代碼庫(kù)分別在上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼化,用于持續(xù)部署。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是...

    kumfo 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼d...

    susheng 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼d...

    mo0n1andin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<