2016-09-22 111 views
4

我試圖在Docker容器中運行Python Flask Web服務器,但我無法從外部連接到Flask服務器。如何在Docker容器中運行Python Flask

我做了什麼:

我創建/temp/HelloFlask.py

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 

我開始用集裝箱港口碼頭工人容器5000映射到主機5000端口,並與〜/臨時掛載到/溫度

docker run -it -p 5000:5000 -v ~/temp:/temp --name tf gcr.io/tensorflow/tensorflow:latest-devel 

在正在運行的碼頭集裝箱內,我安裝了Flask並運行了HelloFlask.py

cd /temp 
pip install Flask 
python HelloFlask.py & 

我驗證服務器是在容器內訪問

[[email protected]:/temp# curl localhost:5000 
127.0.0.1 - - [22/Sep/2016 17:41:48] "GET/HTTP/1.1" 200 - 
Hello World! 

我使用泊塢版本1.12.1(編譯:12133),暴露在本地主機上的集裝箱港口,所以我應該能夠在我的Mac上訪問容器外部的localhost:5000,但我無法連接。

我測試過以確保Docker通過運行一個nginx容器(如docker for mac quickstart中所述)正確地將容器端口綁定到本地主機,並且我可以通過本地主機從容器訪問端口。

回答

13

嘗試app.run(host='0.0.0.0')

默認情況下,Flask服務器只能從本地主機訪問。在你的情況下,容器是本地主機,你的請求來自容器外部。 host='0.0.0.0'參數使服務器可以從外部IP訪問。詳細描述在Flask documentation中。

+3

我愛你!我一整天都在b my我的頭。謝謝! – 10GritSandpaper

相關問題