从 angular2 应用程序调用 docker 容器中的服务 运行
Calling a service running in a docker container from an angular2 app
我有一个 UI 应用程序是在 Angular2 中开发的。我还有一些在 Spring Boot 中开发的服务。我正在尝试从 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/test 加载资源失败:net::ERR_NAME_NOT_RESOLVED
但是,我可以从 "testsrvc" 中的另一个服务调用 http://srvc:8080/test,没有任何问题。
我的理解是,由于UI请求来自浏览器,它无法知道"srvc"是什么,而"testsrvc"也是在容器中运行的,它可以 link 到 "srvc"
那么我应该如何从 angular 调用 "srvc"?
P.S:我尝试了 http://srvc:8080/test 和 http:///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.
我有一个 UI 应用程序是在 Angular2 中开发的。我还有一些在 Spring Boot 中开发的服务。我正在尝试从 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/test 加载资源失败:net::ERR_NAME_NOT_RESOLVED
但是,我可以从 "testsrvc" 中的另一个服务调用 http://srvc:8080/test,没有任何问题。
我的理解是,由于UI请求来自浏览器,它无法知道"srvc"是什么,而"testsrvc"也是在容器中运行的,它可以 link 到 "srvc"
那么我应该如何从 angular 调用 "srvc"?
P.S:我尝试了 http://srvc:8080/test 和 http:///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.