ubuntu - 无法从主机连接到 Docker 上的 Flask 应用程序

标签 ubuntu flask docker

我已经设置了一个 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 设置和/或配置有什么问题或可能有什么问题吗?谢谢。

最佳答案

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

为了让 Web 服务器接受来自容器外部的连接,您需要将其绑定(bind)到 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/

关于ubuntu - 无法从主机连接到 Docker 上的 Flask 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26423984/

相关文章:

mysql - 为什么我无法为 MySQL 设置 root 用户?

python - 导入Flask-SocketIO实例

mongodb - 由于缺少 featureCompatibilityVersion 文档,无法启动 mongod。 Docker 问题

windows - 使用 Docker 在 Windows 上安装 gitlab

Ubuntu - 从加密狗 (bu-353) 获取 GPS 坐标

linux - 如何选择目录和所有子目录

ubuntu - apt remove 和 apt purge 后 Ocaml 留在系统中

python - Flask 静态文件 Cache-Control

python - 是否可以限制 Flask 请求触发的 CPU/内存使用?

docker - 为什么docker容器更新不稳定?