Flask部署系列
本篇对群晖上的 docker 容器部署进行补充说明。
pipreqs 模块生成 requirements.txt 文件
在正式将代码上传到 NAS 之前,需要将项目的依赖全部放入到 requirements.txt 文件。使用 pip freeze > requirements.txt 命令生成 requirements.txt,需要手工删除,比较麻烦。变通方法是使用 pipreqs 模块。
pipreqs 使用 pip 命令安装:
pip install pipreqs
然后在项目的根目录,使用下面的命令将项目的依赖写入 requirements.txt 文件。
pipreqs ./
在 Windows 平台,需要制定字符编码:
pipreqs ./ --encoding=utf8
pipreqs 写入到 requirements.txt 可能存在误差,不一定百分百准确。
Gunicorn + Gevent
Gunicorn 是一个 Python 的 WSGI HTTP 服务器。它所在的位置通常是在反向代理(如 Nginx)或者 负载均衡(如 AWS ELB)和一个 web 应用(比如 Django 或者 Flask)之间。它是一个移植自 Ruby 的 Unicorn 项目的 pre-fork worker 模型,既支持 eventlet 也支持 greenlet。
Gevent 做协程,解决高并发的问题。
在 requirements.txt 文件的后面,加上 gunicorn 和 gevent :
Flask==2.0.1 Flask_HTTPAuth==4.4.0 flask_marshmallow==0.14.0 Flask_SQLAlchemy==2.5.1 Werkzeug==2.0.1 marshmallow-sqlalchemy pymysql gunicorn gevent
编写 gunicorn.conf 配置文件
在 gunicorn.conf.py 文件中,进行如下设置:
workers = 3 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整 worker_class = "gevent" # 采用gevent库,支持异步处理请求,提高吞吐量 bind = "0.0.0.0:50060"
制作 Dockerfile
FROM python:3.6-stretch WORKDIR /app ADD . /app RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple CMD ["gunicorn", "main:app", "-c", "./gunicorn.conf.py"]
制作 Docker 镜像
通过 ssh 连接到群晖系统,在项目文件的根文件夹运行下面的命令生成 docker 镜像:
docker build -t dockername .
群晖 docker 中启动镜像
设置端口映射后启动容器。
部署完成。
原文链接:https://www.jianshu.com/p/841751a37122
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END