gpt4 book ai didi

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

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

我有一个用Angular2开发的UI应用程序。我也有一些在Spring Boot中开发的服务。我正在尝试从Angular应用程序调用Spring Boot服务。

以下是我的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 / test无法加载资源:net::ERR_NAME_NOT_RESOLVED

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

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

那么,我应该如何从 Angular 调用“srvc”呢?

PS:我尝试了 http://srvc:8080/testhttp://srvc/test
都没有工作。

容器中的 Angular 应用程序已启动并正在运行,我能够从 http://localhost:4200访问它

最佳答案

The angular application in the container is up and running and I am able to access it from http://localhost:4200



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

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

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

如果您需要主机能够看到 srvc作为适当的名称,则另一个选择是编辑 hosts文件并为此添加一个条目。只需将 srvc映射到 127.0.0.1,然后您就可以在主机上使用 http://srvc:8000,它将路由到localhost:8000。

关于angular - 从angular2应用程序调用在Docker容器中运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006620/

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