docker - 从我的本地计算机连接到 docker localhost 端口

标签 docker dockerfile containers webserver port

我正在 Docker 容器内运行 Flask 应用程序。我想访问容器端口8000 * 运行于 http://127.0.0.1:8000/

来 self 的主机。

我正在通过运行 docker 容器

docker run -p 127.0.0.1:8080:8000 --rm $(IMAGE_NAME) /Stocks/startserver.sh

当我执行docker ps时 我看到以下文字

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
85168e4c963e        stocks              "/Stocks/startserver…"   12 seconds ago      Up 11 seconds       127.0.0.1:8080->8000/tcp   beautiful_bartik

当我在本地计算机上打开 localhost:8080 时,我什么也看不到。 根据我的理解,端口是开放的,知道为什么我无法从主机连接到它吗? 关于如何调试解决方案的任何提示?

最佳答案

在 http://127.0.0.1:8000/上运行

如果这是 Flask 服务器的控制台输出,那么听起来您在容器内错误地启动了它。看起来 Flask 正在容器内的 127.0.0.1 (localhost) 上运行。它需要运行在容器的外部接口(interface)上!

通过启动来实现这一点:

flask run -h 0.0.0.0

或者,如果在应用程序内使用(过时的)方法 app.run,请向其传递 host 参数:

if __name__ == '__main__':
    app.run(host='0.0.0.0',
        # Any other launch args you have
        )

0.0.0.0 是特殊地址,表示“所有接口(interface)”。

我还会采纳 @jdickel 的建议,并从运行命令中省略 127.0.0.1

关于docker - 从我的本地计算机连接到 docker localhost 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65246551/

相关文章:

docker - "correct"在docker中管理数据库模式的方法

flutter - 容器 BorderRadius.circular 不起作用( flutter )

docker - 如何快速删除被停止的容器阻塞的多个 <none> docker 图像

docker - 使用 docker 在本地运行 Travis

docker - 从Dockerfile运行mvn install会出错,但是从容器内部运行成功

docker - Kibana Docker “This may take a few minutes”但从未启动

angularjs - 如何创建 AngularJS 应用程序的 Docker 容器?

node.js - Nginx 和 Node.js - 充分利用服务器

docker - Prometheus查询以监视按名称和图像过滤的Docker容器

python-3.x - Python + Docker + 未找到模块