【发布时间】:2020-08-15 20:27:18
【问题描述】:
我有一个 docker-compose 文件,其中包含多个容器,它们之间的两个是 Angular 前端应用程序和一个 Spring Boot API。 在运行 docker-compose 文件时,我成功地从浏览器访问了 Angular 应用程序,但是当我尝试从 Angular 应用程序访问 API(发送发布请求)时,我得到了
net::ERR_NAME_NOT_RESOLVED.
在我的 Angular 应用程序中,我使用 docker-compose 中定义的别名调用 api。
http://search-service:8080/
有解决此错误的建议吗?
【问题讨论】:
-
快速猜测:由于您在主机上打开了 Angular 应用程序,因此您的服务的别名未知且无法解析。您需要使用它的 IP。
-
@pzaenger 或 localhost:8080 如果端口暴露给主机
-
@PiotrKorlaga 确实,好点。
-
我没有使用主机网络,所以即使 localhost:8080 也无法正常工作。在 Angular 源代码中使用 IP 地址连接到 API 是否是一种好习惯,尤其是当后端容器 IP 地址可以更改时?是否有任何其他解决方案可以自动解决此“别名-IP 地址”转换问题。
-
@daliDV 通常您使用 environment.ts 进行开发设置,例如 localhost 和 environment.prod.ts 用于具有真实主机名的产品设置
标签: angular spring-boot docker docker-compose