繁体   English   中英

为什么 docker-compose 中的 web 应用程序不能连接到同一个 compose 中的另一个容器?

[英]Why can't web app in docker-compose, connect to another container in the same compose?

我有一个 docker compose 文件,其中至少有 2 个 tomcat 容器:(注意,这不是有效的 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) 的 Web 应用程序。 restapi依赖的其他服务有 X 个(数据库、redis 等)。 rest api 使用 docker-compose.yaml 中定义的服务名称成功连接到其依赖项,但是, web服务内的应用程序无法连接到restapi服务。 也就是说,当我docker exec进入web容器时,我可以成功地使用curlrestapi发出请求。

是否有一个已知的场景,即 javascript 应用程序无法连接到同一个 docker-compose.yml 中的 docker 容器。

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

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

那么你的RESTAPI从Web容器访问。 所以它看起来像一个错误的配置。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM