【问题标题】:How to call an endpoint of one container from another flask container running on different ports in docker compose?如何从在 docker compose 的不同端口上运行的另一个烧瓶容器调用一个容器的端点?
【发布时间】:2019-09-30 14:00:04
【问题描述】:

我正在尝试使用 docker-compose 实现 3 个烧瓶 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 烧瓶端点时,

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

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

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

【问题讨论】:

  • 用户服务名称而不是127.0.0.1
  • 对不起。烧瓶和码头容器相对较新。你能给我指个方向吗?
  • 在 compose 中,您为每个烧瓶容器使用服务名称,使用它们
  • 哇。这就像一个魅力。使用servicename:5001。非常感谢。 :-)

标签: python-3.x docker flask docker-compose docker-networking


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多