2016-06-13 68 views
2

我试图在使用docker-compose的调试模式下运行简单的烧瓶应用程序。我创建了我Dockerfile如下:无法在调试模式下使用Docker运行烧瓶应用程序

FROM jazzdd/alpine-flask 

EXPOSE 80 

我的搬运工,撰写文件看起来像这样:

version: '2' 

networks: 
    test_network: 
    driver: bridge 

services: 
    db: 
    networks: 
     - test_network 
    image: postgres:9.5.3 
    env_file: 
     - docker.env 
    expose: 
     - 5432 

    app: 
    networks: 
     - test_network 
    build: . 
    env_file: 
     - docker.env 
    expose: 
     - 80 
    ports: 
     - 80:80 
    volumes: 
     - ./app/:/app 
    command: -d 

我docker.env只是有密码Postgres数据库。我创建了一个简单的python文件,如下所示:

from flask import Flask 
    app = Flask(__name__) 

    @app.route('/') 
    def hello_world(): 
    return "Hello, World" 

if __name__ == '__main__': 
    app.run(debug=True,host='0.0.0.0') 

现在运行应用程序,我使用docker-compose up -d --build命令。我会假设应用程序在服务器上启动后,当我对app.py文件进行任何更改时,它将反映在网页上,而不必重新启动容器。我没有看到预期的行为。我试图设置我的本地环境变量FLASK_DEBUG=1,但不知道这是否会有所帮助。我错过了什么吗?

我也引用this页面,但没有看到任何有用的东西。

+0

您在OSX或Windows上使用VirtualBox吗? – Matt

+0

并且是您的烧瓶应用程序日志记录'*在启动时使用reloader'重新启动? – Matt

回答

2

样本(简化)runthru演示文件编辑,无需重新启动容器,以供您参考。

app.py

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return "Hello, World" 

if __name__ == '__main__': 
    app.run(debug=True,host='0.0.0.0',port=80) 

您将需要指定为了匹配80

screenshot can be viewed here

总结的暴露集装箱港口的发展烧瓶服务器截图中的步骤(MAC OS X):

  1. 开始与空目录
  2. 创建app.py
  3. 搬运工运行
  4. 卷曲本地主机(这将显示的Hello,World)
  5. 编辑app.py
  6. 卷曲本地主机(即会显示新编辑)
+0

这是个问题。指定端口使其工作。谢谢。我还必须添加命令:-d到我的docker-compose打开调试模式。 –

0

在我的情况下,我与gevent发生冲突。以下是解决方法:

import os 
if not (os.environ.get('FLASK_DEBUG') == 1): 
    from gevent import monkey 
    monkey.patch_all() 
相关问题