docker部署flask

flask+docker+gunicorn部署

嘗試了好幾天,終于部署成功了(tip:坑還是很多的)

首先需要了解的有:Flask框架、Docker、Gunicorn、以及Python。

第一步: 建議大家現(xiàn)在本地調(diào)試,我也從本地調(diào)試開(kāi)始

1.創(chuàng)建一個(gè)新的venv并且安裝依賴包(如果你都已經(jīng)裝好了可以直接進(jìn)入虛擬環(huán)境開(kāi)始操作)

????- 創(chuàng)建Venv方法:$python3 -m venv ~/venv?

2.進(jìn)入venv環(huán)境

?. ~/venv/bin/activate

3.安裝所需依賴包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gevent gunicorn flask wheel

4.在你安裝Flask的時(shí)候會(huì)生成一個(gè)FLASK_APP的方法,接下來(lái)可以嘗試運(yùn)行你的Python腳本

$ export FLASK_APP=Flask項(xiàng)目入口文件

$ flask run

TIP:進(jìn)入你Flask項(xiàng)目的根目錄里面,然后執(zhí)行這個(gè),否則會(huì)出現(xiàn)找不到模塊的錯(cuò)誤。

5.如果一切正常,你應(yīng)該看到你的應(yīng)用程序在已經(jīng)5000端口運(yùn)行了,出現(xiàn)問(wèn)題的話,可以查看一下自己的路徑。



第二步:將項(xiàng)目打包后使用Gunicorn運(yùn)行

1.使用Distutils來(lái)打包整個(gè)Flask項(xiàng)目,目的是方便我們通過(guò)pip來(lái)安裝我們的應(yīng)用了,這個(gè)不是必須的步驟。

????```

from distutils.core import setup

setup(name='名稱',?

?version='1.0.0',

?description='This is a demo to show how to run a flask app in docker',

?author='Jmt',

?author_email='958195812@qq.com',?

?url='http://jmt.com',?

?packages=['項(xiàng)目位置'] )

```

TIP:這里的name 一定要定義準(zhǔn)確因?yàn)槭褂肎unicorn運(yùn)行要對(duì)應(yīng)上,packages需要找到這個(gè)項(xiàng)目的整體,保證路徑準(zhǔn)確

2.配置gunicorn文件[gunicorn.conf.py]用來(lái)做啟動(dòng)命令

```

workers=10

worker_class="gevent"

bind="0.0.0.0:8888"

```

3.我們?nèi)缓笥胮ip將我們的應(yīng)用程序安裝到剛剛創(chuàng)建的VENV中

$ pip install .

4.使用Gunicorn來(lái)運(yùn)行這個(gè)包

$ gunicorn name:app -c ./gunicorn.conf.py

-TIP:這里的name就是打包好的項(xiàng)目的名稱->注意后面gunicorn.conf.py的路徑

5.現(xiàn)在就可以

訪問(wèn)你的網(wǎng)址了接口為8888 到這里本地測(cè)試基本就完成了



第三步:可以使用docker來(lái)進(jìn)行部署了

1.首先把我們所用到的Python庫(kù)打包方便到遠(yuǎn)程自動(dòng)安裝

$ pip freeze > requirements.txt

2.編寫(xiě)我們的Dockerfile文件

'''

FROM python:3

WORKDIR? 這里寫(xiě)好項(xiàng)目路徑

COPY . .

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt

RUN pip install .

CMD ["gunicorn", "name:app", "-c", "./gunicorn.conf.py"]

'''

TIP:這里可能出現(xiàn)的問(wèn)題就是WORKDIR一定要寫(xiě)到項(xiàng)目的路徑,這里的CMD啟動(dòng)命令,一定要跟setup.py的名稱相同不然肯定會(huì)出現(xiàn)各種問(wèn)題導(dǎo)致你無(wú)法運(yùn)行


最終的目錄結(jié)構(gòu)


最后兩步創(chuàng)建docker鏡像,運(yùn)行鏡像就大功告成了

1.

docker build -t " my_test"? .

2.

docker run -it --rm -p 8888:8888 my_test


3.最終Ctrl+P Ctrl+q

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容