从angular2应用程序调用在docker容器中运行的服务
我有一个用Angular2开发的UI应用程序。我还有一些在SpringBoot中开发的服务。我试图从Angular应用程序调用Spring引导服务 下面是我的docker-compose.yml从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
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应用程序的容器内?我有类似的情况,但我无法访问它,甚至在容器内