【问题标题】:Docker flask app working on Mac but not Windows OSDocker 烧瓶应用程序可在 Mac 上运行,但不能在 Windows 操作系统上运行
【发布时间】: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


【解决方案1】:

这不是这样做的方法。您必须使用主机或容器的 IP 地址。 对于初学者,请尝试在浏览器中输入:

  1. http://localhost:5000

  2. http://127.0.0.1:5000

您也可以尝试在 Windows 命令行中运行: ipconfig

这应该会为您提供 Windows 主机拥有的 IP 地址列表, 那么您可以尝试使用这些地址访问您的应用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2011-07-26
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    相关资源
    最近更新 更多