无法使用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):
- 从空目录开始
- 创buildapp.py
- docker运行
- curl本地主机(这将显示你好,世界)
- 编辑app.py
- curl localhost(这应该显示新的编辑)
在我的情况下,我和gevent发生了冲突。 解决方法如下:
import os if not (os.environ.get('FLASK_DEBUG') == 1): from gevent import monkey monkey.patch_all()