国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Flask+python3+supervisor+redis+docker+nginx技術架構web

leon / 1640人閱讀

摘要:背景手里有一個項目,代碼按照前端代碼庫后端代碼庫分別在上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的去保證一個項目的正常運作,但是這個項目也不是特別大,所以嘗試將代碼融合,于此同時將代碼化,用于持續部署。

背景

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

技術架構

原來的代碼使用gunicorn+gevent+supervisor+flask+DB的架構;具體的細節如下:

本地服務器搭建了一個nginx域名服務器,里面區分PC端還是手機端;

訪問域名通過nginx,訪問前端靜態頁面的內容

靜態頁面中加載指定地址的數據,提供數據的服務由flask后端提供接口;

后端提供的接口,通過訪問redis緩存和mongodb數據庫,返回相應的數據;

整改方案

首先我們需要將DB和Flask App拆分開,使用supervisor將包括DB在哪的所有進程,都控制在一起,所以我們需要經他們分開:

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

構建flask app的dockerfile

在dockerfile中,我們決定不實用supervisor,具體原因下面說;

由于之前的supervisor是安裝在centos中的,我們代碼使用python3,所以在centos上裝了一個虛擬環境,用于跑flask代碼,所以我們使用python:3.6-slim為基礎鏡像;在使用apline鏡像的時候,不能安裝一些依賴,包括supervisor,所以我選擇了slim,后面拆分的時候因為supervisor在slim中,每次啟動都有問題,所以我放棄了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

上面構建的是整個flask項目的鏡像,包括寫數據庫的進程(可獨立運行),還有一個廣播的進程,最后就是flask本身的進程;我們已經將數據庫獨立出來,所以在原來的代碼中需要將訪問數據庫的URL host修改對應的IP,也可以使用--link,直接指定contianer的名字代替host,具體原理沒有詳細研究。(后來發現,在平滑升級的時候還是需要將DB對應的端口暴露給宿主機,本來使用--link是不需要的);

flask鏡像包含了寫數據庫,flask本身(可以理解為讀數據庫)和廣播功能,我們在啟動鏡像的時候,需要啟動這三個進程,分別是: flask run --host 0.0.0.0; flask wdb; flask broadcast;

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19529.html

相關文章

  • Flask+python3+supervisor+redis+docker+nginx技術架構web

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

    Berwin 評論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術架構web

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

    kumfo 評論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術架構web

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

    susheng 評論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術架構web

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

    mo0n1andin 評論0 收藏0

發表評論

0條評論

leon

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<