gpt4 book ai didi

javascript - 为什么 docker-compose 中的 Web 应用程序无法连接到同一 compose 中的另一个容器?

转载 作者:行者123 更新时间:2023-11-29 20:59:59 24 4
gpt4 key购买 nike

我有一个包含至少 2 个 tomcat 容器的 docker compose 文件:(注意,这不是有效的 docker-compose,只是一个模板)

version: "3"

services:
restapidependencies:
xxxxxx

restapi:
image: tomcat:8.0-jre8
depends_on:
- restapidependencies
ports:
- "8888:80"

command: catalina.sh run

web:
image: tomcat:8.0-jre8
depends_on:
- coreservices
ports:
- "7777:80"

command: catalina.sh run

一个是 RESTful api,另一个是基于 javascript (angularJS) 构建的网络应用程序。 restapi 依赖 X 数量的其他服务(数据库、redis 等)。 rest api 使用 docker-compose.yaml 中定义的服务名称成功连接到其依赖项,但是 web 服务中的应用程序无法连接到 restapi 服务.也就是说,当我 docker exec 进入 web 容器时,我可以使用 curl 成功地向 restapi 发出请求.

是否存在 javascript 应用程序无法连接到同一 docker-compose 中的 docker 容器的已知场景。

PS:我没有开发运行 web 的应用程序,所以我对它可能做的任何特殊事情了解有限,我的前端开发人员给了我一个解释:“Web 应用程序是在浏览器中运行”,这是有道理的。一些想法:这是否意味着网络应用程序也无法访问本地主机?即使是这种情况,docker compose 也会创建一个容器网络,因此在同一个应用程序中不会共享本地主机,从技术上讲,web 正在调用一个完全不同的 ip,而不是本地主机。

最佳答案

我 docker exec 进入 web 容器,我可以使用 curl 成功地向 restapi 发出请求

然后您的 restapi 可以从您的网络容器访问。所以它看起来像是一个错误的配置。

  • 有日志信息吗?
  • 应用程序如何尝试建立连接?
  • 也许您忘记为您的 webapp 定义任何环境变量?
  • 也许您的 rest api 没有公开任何端口?

尝试获取日志输出,告诉您连接失败的原因。

关于javascript - 为什么 docker-compose 中的 Web 应用程序无法连接到同一 compose 中的另一个容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062359/

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