首页 文章

如何在Docker容器中运行Python Flask [重复]

提问于
浏览
5

这个问题在这里已有答案:

我正在尝试在docker容器中运行Python Flask Web服务器,但我无法从外部连接到Flask服务器 .

What I've done:

我创建了 /temp/HelloFlask.py

from flask import Flask
app = Flask(__name__)

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

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

我启动了docker容器,容器端口5000映射到主机端口5000,并且〜/ temp安装到/ temp

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

在运行的docker容器内,我安装了Flask并运行了 HelloFlask.py

cd /temp
pip install Flask
python HelloFlask.py &

我验证了容器内的服务器是可访问的

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

我正在使用Docker版本1.12.1(版本:12133),它暴露了localhost上的容器端口,所以我应该可以在我的Mac上访问容器外的 localhost:5000 ,但我无法连接 .

我通过运行如docker for mac quickstart中所述的运行nginx容器来测试以确保Docker正确地将容器端口绑定到localhost,并且我可以通过localhost从容器访问端口就好了 .

1 回答

  • 19

    试试 app.run(host='0.0.0.0') .

    默认情况下,Flask服务器只能从localhost访问 . 在您的情况下,容器是localhost,您的请求来自容器外部 . host='0.0.0.0' 参数使服务器可从外部IP访问 . 它在Flask documentation中有详细描述 .

相关问题