从angular2应用程序调用在docker容器中运行的服务

从angular2应用程序调用在docker容器中运行的服务,angular,docker,docker-compose,angular2-services,Angular,Docker,Docker Compose,Angular2 Services,我有一个用Angular2开发的UI应用程序。我还有一些在SpringBoot中开发的服务。我试图从Angular应用程序调用Spring引导服务 下面是我的docker-compose.yml version: '2' networks: mynet: services: ui: image: uiimg networks: - mynet ports: - "4200:4200" srvc: image: scservice

我有一个用Angular2开发的UI应用程序。我还有一些在SpringBoot中开发的服务。我试图从Angular应用程序调用Spring引导服务

下面是我的docker-compose.yml

version: '2'
networks:
  mynet:
services:
  ui:
    image: uiimg
    networks:
      - mynet
    ports:
      - "4200:4200"
  srvc:
    image: scservice
    networks:
      - mynet
    ports:
      - "8080:8080"
  testsrvc:
    image: testsrvc
    networks:
      - mynet
    ports:
      - "8081:8081"      
这就是我从angular调用“srvc”定义的服务的方式

return this.http.get("http://srvc:8080/test").map(result => result.json());
但是我得到了错误 srvc:8080/测试无法加载资源:net::错误\u名称\u未\u解析

但是,我可以从“testsrvc”中的另一个服务调用,而不会出现任何问题

我的理解是,由于UI请求源于浏览器,它无法知道“srvc”是什么,而“testsrvc”也在容器中运行,因此它可以链接到“srvc”

那么,我应该如何从角度来称呼“srvc”

附言:我试过了 两者都不起作用

容器中的angular应用程序已启动并正在运行,我可以从

容器中的angular应用程序已启动并正在运行,我可以从

这是从主机访问容器的正确方法

如果您想使用
http://srvc:8000
,您必须位于同一Docker网络中的Docker容器内。docker compose配置已正确设置,因此您可以从其他docker容器中访问该网络名称和端口

但是,从主机上,您无法访问容器的网络名称。映射端口允许您通过
localhost
访问容器中的服务,如您所见

如果您需要您的主机能够将
srvc
视为正确名称,则另一个选项是编辑
hosts
文件并为此添加条目。只需将
srvc
映射到
127.0.0.1
即可使用
http://srvc:8000
从您的主机,它将路由到localhost:8000

容器中的angular应用程序已启动并正在运行,我可以从

这是从主机访问容器的正确方法

如果您想使用
http://srvc:8000
,您必须位于同一Docker网络中的Docker容器内。docker compose配置已正确设置,因此您可以从其他docker容器中访问该网络名称和端口

但是,从主机上,您无法访问容器的网络名称。映射端口允许您通过
localhost
访问容器中的服务,如您所见


如果您需要您的主机能够将
srvc
视为正确名称,则另一个选项是编辑
hosts
文件并为此添加条目。只需将
srvc
映射到
127.0.0.1
即可使用
http://srvc:8000
从您的主机,它将路由到localhost:8000。

当我从angular应用程序调用使用localhost的服务时,它正在工作。这样做对吗?任何帮助都将不胜感激。您好,您是否有机会解决此问题?您需要angular应用程序调用与angular应用程序在同一服务器上运行的NodeJ或其他后端服务,然后从node js应用程序调用docker compose中使用服务名称的任何其他服务,希望帮助当我从angular应用程序使用localhost调用服务时,它正在工作。这样做对吗?任何帮助都将不胜感激。您好,您是否有机会解决此问题?您需要angular应用程序调用与angular应用程序在同一服务器上运行的NodeJ或其他后端服务,然后从node js应用程序调用docker compose中使用服务名称的任何其他服务,希望帮助显示我访问
http://srvc:8000
在我的angular应用程序的容器内?我有类似的情况,但即使在容器内也无法访问它。我如何访问
http://srvc:8000
在我的angular应用程序的容器内?我有类似的情况,但我无法访问它,甚至在容器内