我正在尝试在 docker 容器内运行 Python Flask Web 服务器,但无法从外部连接到 Flask 服务器。
我做了什么:
我创建/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:5000
在我的 Mac 上,在容器外部,但无法连接。
我进行了测试,以确保 Docker 通过运行 nginx 容器正确地将容器端口绑定到本地主机,如Mac 版 Docker 快速入门 https://docs.docker.com/docker-for-mac/,我可以通过本地主机访问容器中的端口。
Try app.run(host='0.0.0.0')
.
默认情况下,只能从本地主机访问 Flask 服务器。在您的情况下,容器是本地主机,您的请求源自容器外部。host='0.0.0.0'
参数使服务器可以从外部 IP 访问。它的描述在烧瓶文档 http://flask.pocoo.org/docs/0.11/quickstart/#a-minimal-application详细。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)