flask+docker+gunicorn部署
嘗試了好幾天,終于部署成功了(tip:坑還是很多的)
首先需要了解的有:Flask框架、Docker、Gunicorn、以及Python。
第一步: 建議大家現在本地調試,我也從本地調試開始
1.創(chuàng)建一個新的venv并且安裝依賴包(如果你都已經裝好了可以直接進入虛擬環(huán)境開始操作)
????- 創(chuàng)建Venv方法:$python3 -m venv ~/venv?
2.進入venv環(huán)境
?. ~/venv/bin/activate
3.安裝所需依賴包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gevent gunicorn flask wheel
4.在你安裝Flask的時候會生成一個FLASK_APP的方法,接下來可以嘗試運行你的Python腳本
$ export FLASK_APP=Flask項目入口文件
$ flask run
TIP:進入你Flask項目的根目錄里面,然后執(zhí)行這個,否則會出現找不到模塊的錯誤。
5.如果一切正常,你應該看到你的應用程序在已經5000端口運行了,出現問題的話,可以查看一下自己的路徑。
第二步:將項目打包后使用Gunicorn運行
1.使用Distutils來打包整個Flask項目,目的是方便我們通過pip來安裝我們的應用了,這個不是必須的步驟。
????```
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=['項目位置'] )
```
TIP:這里的name 一定要定義準確因為使用Gunicorn運行要對應上,packages需要找到這個項目的整體,保證路徑準確
2.配置gunicorn文件[gunicorn.conf.py]用來做啟動命令
```
workers=10
worker_class="gevent"
bind="0.0.0.0:8888"
```
3.我們然后用pip將我們的應用程序安裝到剛剛創(chuàng)建的VENV中
$ pip install .
4.使用Gunicorn來運行這個包
$ gunicorn name:app -c ./gunicorn.conf.py
-TIP:這里的name就是打包好的項目的名稱->注意后面gunicorn.conf.py的路徑
5.現在就可以
訪問你的網址了接口為8888 到這里本地測試基本就完成了
第三步:可以使用docker來進行部署了
1.首先把我們所用到的Python庫打包方便到遠程自動安裝
$ pip freeze > requirements.txt
2.編寫我們的Dockerfile文件
'''
FROM python:3
WORKDIR? 這里寫好項目路徑
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:這里可能出現的問題就是WORKDIR一定要寫到項目的路徑,這里的CMD啟動命令,一定要跟setup.py的名稱相同不然肯定會出現各種問題導致你無法運行
最終的目錄結構

最后兩步創(chuàng)建docker鏡像,運行鏡像就大功告成了
1.
docker build -t " my_test"? .
2.
docker run -it --rm -p 8888:8888 my_test
3.最終Ctrl+P Ctrl+q