【发布时间】:2020-10-27 23:01:04
【问题描述】:
我构建了一个可在多台 Mac 机器上运行的 docker 应用程序。但是,当它在 Windows 10 上运行时(安装了最新的 Docker),转到http://0.0.0.0:5000/ 时会产生以下错误
This site can’t be reached
The webpage at http://0.0.0.0:5000/ might be temporarily down or it may have moved permanently to a new web address.
ERR_ADDRESS_INVALID
供参考,文件flaskapp.py以:
if __name__ == '__main__':
app.run(host= '0.0.0.0')
Dockerfile 如下所示:
FROM python:3
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /app
EXPOSE 5000
CMD [ "python", "flaskapp.py" ]
docker 已构建并推送到 docker hub,然后使用以下命令拉取并运行:
docker run -p 5000:5000 username/reponame
在多台Mac机器上运行时,终端打印出来:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
我可以使用此地址导航到浏览器,我的应用程序可以正常工作。
在 Windows 上,它在命令行中打印相同的内容,但无法访问该站点。
有什么想法吗?我认为 docker 应该可以跨平台工作。
【问题讨论】:
-
0.0.0.0 是一个特殊的 IPv4 地址,意思是“无处不在”;将其用作侦听地址(在您的
app.run()呼叫中)是有意义的,但不能用作出站 URL。您在 Windows 上使用哪种 Docker(桌面应用程序或旧版 Toolbox 设置)? -
桌面应用
-
http://localhost:5000/有效吗? (只要浏览器/客户端与容器位于同一主机上,并且您不在 Docker Toolbox 上或从另一个容器内部调用,它应该可以工作。) -
好的,会试试的。那么使用相同的命令
docker run -p 5000:5000 username/reponame运行docker,然后使用http://localhost:5000/而不是它在终端中打印的内容?另外,docker 工具箱的行为是否有所不同? -
对于 Docker Toolbox,您需要 VM 的 IP 地址,通常是 192.168.99.100,但无论
docker-machine ip告诉您什么。
标签: python windows docker flask operating-system