2016-09-22 110 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

相关问题