Docker 部署 Gunicorn 项目时的坑

本贴最后更新于 1328 天前,其中的信息可能已经时移世易

坑一:Docker run 之后没反应 什么都没有 日志都没有

检查 Gunicorn 配置文件,原来使用了 daemon = True 参数,这个参数是将 Guncorn 放到后台运行,所以消失了并且没有任何输出。

解决方案:屏蔽 daemon 参数

坑二:Gunicorn 没有 Flask 的日志输出

启动后只有 Gunicorn 的日志,而没有 Flask 的日志

解决方案:在 Flask 里面添加

if name!= 'main':

import logging

#如果不是直接运行,则将日志输出到 gunicorn 中

gunicorn_logger= logging.getLogger('gunicorn.error')

app.logger.handlers= gunicorn_logger.handlers

app.logger.setLevel(gunicorn_logger.level)

坑三:worker_class 使用 geventwebsocket.gunicorn.workers.GeventWebSocketWorker 时没有 Flask 的访问日志

解决方案:不知道怎么解决,将 worker_class 换为 gevent 可以输出访问日志,但是并没有解决根本问题

坑四:Gunicorn 的启动参数不生效

原因:Gunicorn 的默认配置文件名称是 gunicorn.conf.py,如果这里面写了内容,直接用参数运行是怎么都不会生效的

删除默认配置文件 gunicorn.conf.py,或者使用 gunicorn.conf.py 去配置

  • Gunicorn
    3 引用 • 21 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...