如何在Docker dev上下文中使用supervisord在DEBUG模式下启动Flask?

时间:2016-08-04 20:59:01

标签: debugging flask docker-compose gunicorn supervisord

我正在开发一款应用,并试图通过Docker environment中的flaskDEBUG模式运行supervisord个实例。

Supervisord config

我使用supervisord启动我的 nginx flask 实例。

flask.conf

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid

[program:flask]
command=gunicorn views:app -b localhost:5000 -w 2
directory=/daemon/api

nginx.conf

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log

[program:nginx]
command=nginx

Docker config

搬运工-compose.override.yml

version: '2'

services:
  backend:
     …
  daemon:
    environment:
      - FLASK_APP=/daemon/api/views.py
      - FLASK_DEBUG=1
    volumes:
      - ./daemon/api:/daemon/api
    command: supervisord
  frontend:
    …

问题

尽管在我的 docker-compose.override.yml 中将FLASK_DEBUG=1设置为环境变量,但flask并未在调试模式下运行。

在调试模式下运行需要更改什么?

1 个答案:

答案 0 :(得分:1)

/etc/supervisor/conf.d/dev.conf

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid

[include]
files = /etc/supervisor/conf.d/flask-dev.conf /etc/supervisor/conf.d/nginx.conf

/etc/supervisor/conf.d/flask-dev.conf

使用新方法python -m flask run --host=0.0.0.0将开发服务器作为模块运行(否则无法在nginx后面工作)

[program:dev]
command=python -m flask run --host=0.0.0.0
directory=/daemon/api
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/flask.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=5

搬运工-compose.override.yml

运行一个特殊命令,在开发环境中使用supervisord启动dev.conf并设置FLASK_DEBUG=1

…
daemon:
    environment:
      - FLASK_APP=/daemon/api/views.py
      - FLASK_DEBUG=1
    volumes:
      - ./daemon/api:/daemon/api
    command: supervisord -c /etc/supervisor/conf.d/dev.conf
…

nginx.conf

独立WSGI容器Proxy Setups section 中的示例中,我注意到尾随斜杠,因此将它们添加到我的location和{{1}指令。

proxy_pass