• Unreal is funny !!!

gunicorn+flask Docker部署

IT技术 站长 3年前 (2022-01-18) 4040次浏览 已收录 3个评论
文章目录[隐藏]

项目介绍

最近在开发一个bert文本分类的项目,api 使用 flask 作为 http框架,需要部署在 Docker 上。
环境配置:

  • Flask==2.0.1
  • gunicorn==20.1.0

项目requirements.txt

  1. Flask==2.0.1
  2. gunicorn==20.1.0

代码展示

示例 api.py
一个简单的web 服务,监听 8888端口(

注意这里要绑定 0.0.0.0

  1. from flask import Flask, request, jsonify
  2.  
  3. app = Flask(__name__)
  4.  
  5.  
  6. @app.route('/ready')
  7. def ready():
  8. return "ok", 400
  9.  
  10.  
  11. if __name__ == '__main__':
  12. app.run(host="0.0.0.0", port=8888)
  13.  

如果直接 python3 api.py ,则会报以下警告:

  1. * Environment: production
  2. WARNING: This is a development server. Do not use it in a production deployment.
  3. Use a production WSGI server instead.

根据文档 flask 文档-部署 ,不可以这么部署,所以我们使用 gunicorn 部署。
安装gunicorn 很简单

  1. pip3 install gunicorn

运行 gunicorn

  1. gunicorn -w 3 -b 0.0.0.0:8888 api:app

-w 3 代表启动3个flask进程
-b 0.0.0.0:8888 代表绑定到 8888端口
api:app 代表启动 api.py 的为 app变量 的 flask

我们写成 dockerfile

dockerfile 示例

  1. FROM python:3.7-slim
  2. COPY requirements.txt /
  3. RUN pip3 install --no-cache-dir -r /requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  4.  
  5. WORKDIR app
  6. RUN mkdir /app/log
  7.  
  8. ENV PROCESS_CNT ${PROCESS_CNT:-3}
  9. COPY . .
  10. ENTRYPOINT gunicorn -w $PROCESS_CNT -b 0.0.0.0:8888 api:app
  11. EXPOSE 8888

本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:gunicorn+flask Docker部署
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(3)个小伙伴在吐槽
  1. good post
    bXPNOAngicphID2022-02-10 18:07 Reply Windows 10 | Chrome 85.0.4183.121
  2. a great tutorial, thx
    JCjZpIUVdPMxta2022-02-10 18:08 Reply Windows 10 | Chrome 85.0.4183.121
  3. :wink: good ! thx
    KiGLleoTqIHBut2022-02-19 01:28 Reply Windows 10 | Chrome 85.0.4183.121