2016-06-13 81 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() 
相關問題