首页 > 解决方案 > 如何从在 docker compose 的不同端口上运行的另一个烧瓶容器调用一个容器的端点?

问题描述

我正在尝试使用 docker-compose 实现 3 个烧瓶 docker 容器。我在不同的端口上运行每个烧瓶应用程序127.0.0.1:5000, 127.0.0.1:5001, 127.0.0.1:5002. 我已经提到了docker-compose.yml文件中的容器。docker-compose正在创建默认网络。

但是当我尝试从代码访问5001 container's烧瓶端点时5000 container's

requests.get('http://127.0.0.1:5001/endpoint'), 它抛出以下错误。

HTTPConnectionPool(host=\'0.0.0.0\', port=5001): url 超出最大重试次数(由 NewConnectionError 引起

有谁知道我为什么会得到这个。

标签: python-3.xdockerflaskdocker-composedocker-networking

解决方案


那是因为您试图在 docker 容器本身内连接到 localhost,即流量停留在该 docker 容器内。

相反,您要做的是通过主机名连接到其他容器。在 docker/docker-compose 管理的网络上下文中,这只是 docker 容器的名称。例如,对于容器foo,您可以使用容器内部通过 HTTP 连接到端口 5001 http://foo:5001/


推荐阅读