【问题标题】:Unable to Connect to Flask App On Docker From Host [duplicate]无法从主机连接到 Docker 上的 Flask 应用程序 [重复]
【发布时间】:2014-12-12 23:25:26
【问题描述】:

我已经设置了一个 docker ubuntu 14.04 映像,并使用以下命令运行它:

docker run -d -p 5000:5000 ari/python3-flask

Dockerfile:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y python3 python3-pip
ADD . /var/my_app
RUN pip3 install -r /var/my_app/requirements.txt
EXPOSE 5000
CMD ["python3", "/var/my_app/runserver.py"]

但是,如果我尝试 curl 地址 (localhost:5000) 或在浏览器中访问它,我会收到连接失败错误。

容器的 docker 日志显示:

Running on http://127.0.0.1:5000/

Restarting with reloader

我的 docker 设置和/或配置有什么问题或可能有问题吗?谢谢。

【问题讨论】:

  • 发布您的 Dockerfile,您使用的是真正的 docker 还是 boot2docker(win 或 macos)?
  • docker logs <id container> 显示什么?
  • @Dragu:我用的是真正的 docker。
  • 顺便说一句,如果您想在 Docker 中部署您的应用程序而无需学习、安装和配置 uWSGI、Nginx 和 Supervisord(以获得最佳性能和健壮性),您可能需要查看此图像: hub.docker.com/r/tiangolo/uwsgi-nginx-flask

标签: ubuntu flask docker


【解决方案1】:

在您的容器中运行的 Web 服务器正在侦听环回网络接口 (127.0.0.1) 的端口 5000 上的连接。因此,此 Web 服务器将仅响应源自该容器本身的 http 请求。

为了让 Web 服务器接受来自容器外部的连接,您需要将其绑定到 0.0.0.0 IP 地址。

当您使用 Flask 时,这可以通过以下方式在您的 runserver.py 文件中轻松实现:

if __name__ == '__main__':
    app.run(host='0.0.0.0')

然后,当您启动容器并查看日志时,您应该会看到如下内容:

 * Running on http://0.0.0.0:5000/

【讨论】:

  • 不错的观察。谢谢
  • 即使添加了 `host='0.0.0.0' 我仍然收到连接失败错误。我的 docker 文件的配置也与 @Ari 相同。
  • 解决了吗?
猜你喜欢
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 2021-03-05
  • 2022-01-11
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多