使用Gunicorn + Gevent 部署Flask項目-ubuntu環境(docker打包)

部署環境Ubuntu

使用工具Gunicorn + Gevent + Flask + docker + Pycharm

全部操做均在ubuntu下執行(Gunicorn + Gevent不支持win環境!)python

首先先有一個Flask項目(python)

Snipaste_2020-12-31_09-30-26.png

使用藍圖進行封裝 / 下顯示 {}

Snipaste_2020-12-31_09-30-52.png

開啓run.py文件

Snipaste_2020-12-31_10-57-36.png

使用Gunicorn + Gevent 進行啓動flask項目

pip install gunicorn geventdocker

安裝時我出現了這樣的問題

clipboard.png

能夠輸入如下命令
sudo apt-get install python3.6-devflask

下載完成後能夠使用命令啓動flask項目

gunicorn -w 4 -b 192.168.1.79:4000 run:app
Snipaste_2020-12-31_09-43-05.pngubuntu

-w 4是指預約義的工做進程數爲4
-b 192.168.1.79:4000指綁定地址ip和端口
run是flask的啓動python文件,app則是指flask應用程序實例

Snipaste_2020-12-31_09-50-05.png

這樣就證實gunicorn gevent 能夠使用!!segmentfault

接下來咱們使用docker進行項目封裝成鏡像

首先文件目錄會有

requirements.txt文件 - 項目所應用的包名寫入
gunicorn.conf.py文件 - 定義gevent庫及進程數量
Dockerfile文件 - docker打包鏡像的命令步驟app

Snipaste_2020-12-31_10-00-03.png

requirements.txt文件

能夠使用命令進行寫入項目所須要的應用包
pip freeze > requirements.txt異步

gunicorn.conf.py文件
workers = 5        # 定義同時開啓的處理請求的進程數量,根據網站流量適當調整
worker_class = "gevent"  # 採用gevent庫,支持異步處理請求,提升吞吐量
bind = "0.0.0.0:8080"   # 這裏8080能夠隨便調整

Snipaste_2020-12-31_10-15-39.png

Dockerfile文件
FROM python:3.6
WORKDIR /usr/src/app

RUN pip install --upgrade pip

COPY requirements.txt ./
RUN pip install -r requirements.txt

COPY . .

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

Snipaste_2021-01-12_08-44-39.png

進入root權限 ---- 如下都是root模式執行命令

su root - 輸入本機密碼工具

找到項目的cmd路徑進行docker打包生成鏡像

輸入命令:
docker build -t 'docker_flask' .
Snipaste_2020-12-31_10-25-50.png測試

過程可能會很是漫長...(取決於你的項目環境包的多少)網站

看到這個就證實打包完成
Snipaste_2020-12-31_10-27-52.png

接下來就是使用docker去啓用flask項目

查看打包好的鏡像
docker images
Snipaste_2020-12-31_10-30-24.png

使用命令進行啓動鏡像
(爲了防止8080端口占用能夠用8088進行映射)
docker run -itd -p 8088:8080 docker_flask

-i   交互式操做
-t 終端
-d 後臺運行

查看運行中的docker容器
docker ps
Snipaste_2020-12-31_10-37-20.png

容器已經開啓。能夠使用本地ip + 8088進行測試
Snipaste_2020-12-31_10-39-10.png

記得開啓8088端口 - 能夠同網段進行調試。
Snipaste_2020-12-31_10-48-32.png
大功告成!

相關文章
相關標籤/搜索