无法使用Docker以debugging模式运行flask应用程序

我正在尝试使用docker-compose以debugging模式运行简单的应用程序。 我已经创build了我的Dockerfile,如下所示:

FROM jazzdd/alpine-flask EXPOSE 80 

我的docker-compose文件如下所示:

 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数据库。 我创build了一个简单的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文件进行任何更改时,它将反映在网页上,而不必重新启动容器。 我没有看到预期的行为。 我试着设置我的本地variablesFLASK_DEBUG=1但不知道这是否有帮助。 我错过了什么吗?

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

一个样本( 简化 )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。

截图可以在这里查看

截图中的步骤摘要(MAC OS X):

  1. 从空目录开始
  2. 创buildapp.py
  3. docker运行
  4. curl本地主机(这将显示你好,世界)
  5. 编辑app.py
  6. curl localhost(这应该显示新的编辑)

在我的情况下,我和gevent发生了冲突。 解决方法如下:

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