gpt4 book ai didi

python - 为什么我的两个 docker 容器无法通信,即使它们都分别响应?

转载 作者:行者123 更新时间:2023-12-02 20:57:25 25 4
gpt4 key购买 nike

我知道已经以各种方式提出了这个问题,但到目前为止,现有的答案似乎都不起作用,因为它们都引用了我已经在使用的 docker-compose。

我正在尝试启动多容器服务(目前在本地)。一个是运行 flask 并公开端口 5000 的 Web 前端容器(在我的 docker-compose 文件中标记为“web_page”)。另一个容器是文本生成模型(在我的 docker-compose 文件中标记为“模型”)。

这是我的 docker-compose.yml 文件:

version: '3'
services:
web_page:
build: ./web_app
ports:
- "5000:5000"
model:
build: ./gpt-2-cloud-run
ports:
- "8080:8080"

在我运行 docker-compose up 之后我使用浏览器(或 postman )并转到 0.0.0.0:50000.0.0.0:8080我得到了回复,它准确地显示了我期望得到的回复。因此,这两个服务都已启动并运行,并在正确的 ip/端口上响应。但是,当我在 web_page 上单击“提交”以将请求发送到“模型”时,即使我测试它们时两个 ip/端口都响应,我也会收到连接错误。

如果我将“模型”容器作为独立容器运行,并且只在容器中启动 web_page 应用程序,它就可以正常工作。当我将两者都放入容器中时,web_page 立即给了我
requests.exceptions.ConnectionError

在 web_page.py 代码中是:
requests.post('http://0.0.0.0:8080',json={'length': 100, 'temperature': 0.85,"prefix":question})

它与有效负载一起发送到该 IP 并接收回响应。同样,当“模型”在容器中运行并映射端口 8080:8080 时,这可以正常工作。当 web_page 在容器中运行时,由于某种原因它无法到达模型端点。为什么会这样,我该如何解决?

最佳答案

看起来您正在使用由 docker-compose 启动的默认网络(因此它将被命名为 <directory-name_default> )。如果您将请求的基本 URL 切换到后端 docker 容器的主机名(所以模型而不是 0.0.0.0),您的请求应该能够成功。环境变量在这里很好。

顺便说一句,如果您只打算让前端应用程序访问它,您不知道您不需要公开后端应用程序。他们都坐在同一个 docker 网络中,所以他们可以互相交谈。

关于python - 为什么我的两个 docker 容器无法通信,即使它们都分别响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62254343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com