我尝试在Docker容器中运行Python Flask web服务器,但我无法从外部连接到Flask服务器。
我做了什么:
我创建了
我使用Docker容器,并将容器的端口5000映射到主机的5000端口,并将~/temp挂载到/temp。
我正在使用版本为1.12.1(build:12133)的Docker,在本地主机上暴露容器端口,所以我应该能够在容器外部的Mac上访问
我测试了一下,确保Docker正确将容器端口绑定到localhost,方法是按照docker for mac快速入门中所述运行nginx容器,并且我可以通过localhost从容器中访问端口。
/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!
我正在使用版本为1.12.1(build:12133)的Docker,在本地主机上暴露容器端口,所以我应该能够在容器外部的Mac上访问
localhost:5000
,但我无法连接。我测试了一下,确保Docker正确将容器端口绑定到localhost,方法是按照docker for mac快速入门中所述运行nginx容器,并且我可以通过localhost从容器中访问端口。
host='0.0.0.0'
没有起作用。即使我执行app.run(host='0.0.0.0', port=1234)
并且运行docker-compose up
,它仍然显示:Running on http://127.0.0.1:5000/
。为什么它没有在我指定的主机和端口上运行? - Arnold Parge