【发布时间】:2020-01-20 18:31:12
【问题描述】:
我正在使用带有多容器设置的 docker compose。我有一个 Angular 应用程序,部署在 nginx 上并暴露于端口 80。在第二个容器上,我托管 .note 核心 API,该服务返回一个字符串。
在 Angular 中,我调用 URL http://localhost/api/values
看看我附加的 docker compose.yml 文件。使用我目前的设置,当我在本地浏览器中点击“http://localhost:81”时,我得到了想要的结果。
但是,在 Angular 应用程序 (http://localhost/api/values) 中,我想使用“webapi”(http://webapi/api/values),而不是使用“localhost”,我尝试了各种选项,但没有得到想要的输出。到目前为止,我尝试使用主机名、容器名称、别名等
如果您能在这里指出我的错误并帮助我获得期望的输出,我将不胜感激。另外,如果您能建议最佳选择,以防我们在 .net 服务上运行多个实例,我将不胜感激。
解决此问题后,我计划将其部署在 Azure 上,是否需要任何其他设置/配置?
这是我的 yml 文件
提前致谢。
version: '3.7'
services:
web:
build: hello
container_name: web
hostname: web
image: jayforu/hello
networks:
backend:
#aliases:
# - web
# ipv4_address: 172.16.238.01
ports:
- 81:80
webapi:
build: HelloApi
container_name: webapi
hostname: webapi
image: jayforu/helloapi
networks:
backend:
#aliases:
# - webapi
#ipv4_address: 172.16.238.02
ports:
- 80:80
networks:
backend:
# ipam:
driver: bridge
# config:
# - subnet: "172.16.238.0/24"
【问题讨论】:
-
这实际上不是 docker 问题,它与 Angular 及其配置有关,这可能有助于stackoverflow.com/questions/45970744/…
-
你试过打电话给
http://webapi:80/api/values吗? -
另一方面,您仍然可以将您的 URL 用作 localhost,这里的确切问题是端口,如果您使用端口
81它应该适合您,因为您发布了端口81跨度> -
使用 locahost 它可以在 81 上运行,当我将 localhost 更改为 webapi 或 webapi:80 时,它会失败。我怀疑这是否是 Angular 问题。我只是调用驻留在另一个容器上的服务。
-
@mamounothman 我已经更改了配置,并且我已经在公共 git repo 上添加了我的代码,你能抽出时间看看吗?我创建了日志文件夹来显示网络信息和我构建项目的步骤。 API URL 正在文件 hello-world.service.ts 中使用。 github.com/jayrajvcybage/dockercompose.git如果你能纠正我的错误,我将不胜感激
标签: angular docker docker-compose