如何从 docker 中不同端口上的另一个烧瓶容器 运行 调用一个容器的端点?

How to call an endpoint of one container from another flask container running on different ports in docker compose?

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

但是当我尝试从 5000 container's 代码访问 5001 container's flask 端点时,例如

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

HTTPConnectionPool(host=\'0.0.0.0\', port=5001): Max retries exceeded with url (Caused by NewConnectionError

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

那是因为您正在尝试连接到 docker 容器本身内的本地主机,即流量停留在 docker 容器内。

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