摘要:背景手里有一個項目,代碼按照前端代碼庫后端代碼庫分別在上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的去保證一個項目的正常運作,但是這個項目也不是特別大,所以嘗試將代碼融合,于此同時將代碼化,用于持續部署。
背景
手里有一個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
摘要:背景手里有一個項目,代碼按照前端代碼庫后端代碼庫分別在上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的去保證一個項目的正常運作,但是這個項目也不是特別大,所以嘗試將代碼融合,于此同時將代碼化,用于持續部署。 背景 手里有一個web項目,代碼按照前端代碼庫、后端代碼庫分別在GitHub上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的job去保證一個項目的正常運作,但是...
摘要:背景手里有一個項目,代碼按照前端代碼庫后端代碼庫分別在上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的去保證一個項目的正常運作,但是這個項目也不是特別大,所以嘗試將代碼融合,于此同時將代碼化,用于持續部署。 背景 手里有一個web項目,代碼按照前端代碼庫、后端代碼庫分別在GitHub上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的job去保證一個項目的正常運作,但是...
摘要:總結本次鏡像化大概花了一周的時間,包括測試和解決一些坑,很多知識點包括原來的項目都不是太熟悉,所以記錄一下,可能回頭會發現這些很,但是相信對一些人還是有用的。 背景 手里有一個web項目,代碼按照前端代碼庫、后端代碼庫分別在GitHub上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的job去保證一個項目的正常運作,但是這個項目也不是特別大,所以嘗試將代碼融合,于此同時將代碼d...
摘要:總結本次鏡像化大概花了一周的時間,包括測試和解決一些坑,很多知識點包括原來的項目都不是太熟悉,所以記錄一下,可能回頭會發現這些很,但是相信對一些人還是有用的。 背景 手里有一個web項目,代碼按照前端代碼庫、后端代碼庫分別在GitHub上,分散帶來的結果是,不容易持續集成,比如你可能需要很多的job去保證一個項目的正常運作,但是這個項目也不是特別大,所以嘗試將代碼融合,于此同時將代碼d...
閱讀 1951·2021-09-07 09:59
閱讀 2520·2019-08-29 16:33
閱讀 3688·2019-08-29 16:18
閱讀 2849·2019-08-29 15:30
閱讀 1678·2019-08-29 13:52
閱讀 2035·2019-08-26 18:36
閱讀 530·2019-08-26 12:19
閱讀 694·2019-08-23 15:23