Angular 应用程序和部署在 Docker 容器中的 Spring Boot API 之间的通信问题

Posted

技术标签:

【中文标题】Angular 应用程序和部署在 Docker 容器中的 Spring Boot API 之间的通信问题【英文标题】:Communication issue between Angular application and spring boot API deployed in a Docker container 【发布时间】:2021-11-26 14:25:09 【问题描述】:

我正在创建一个应用程序,前端使用 Angular,后端使用 Spring Boot。 Evrything 在我的本地机器上运行良好。但是对于部署,我选择将它们中的每一个容器化到单独的 Docker 容器中。当我尝试从 Angular 应用程序(显示在我的浏览器上)调用后端 api 时,问题就出现了。当我尝试调用路径 http://backend-address/login 时,我在浏览器控制台 http://frontend-address/backend-address/login 405 (Not Allowed) 中收到此错误。 似乎,当我尝试调用后端时,URL 总是被转换,在 http:// 和后端地址之间添加 frontend-address/

我的 Docker 引擎位于地址为 192.168.30.4 的 Linux 虚拟机上。 spring boot 容器映射到虚拟机的 8081 端口,angular 容器映射到 4300 端口。因此,要从 angular 应用程序(显示在我的浏览器上)调用 spring boot API,这是请求我做到了:

`this.httpClient.post<Tokens>("192.168.30.4:8081/login", user, observe: "response").subscribe(…)`

我的浏览器控制台出现了这个错误:

POST http://192.168.30.4:4300/192.168.30.4:8081/login 405(不允许)

我不明白为什么在 http:// 和后端地址 (192.168.30.4:8081) 之间插入前端地址 (192.168.30.4:4300/)

【问题讨论】:

尝试在 httpClient.post "http://192.168.30.4:8081/login" 中添加方案 http:// 谢谢你。你的评论解决了我的问题。我怎么能告诉它到 *** 以使你获得一些积分? 我添加了答案,你可以批准。 :) 【参考方案1】:

尝试在 httpClient.post "http://192.168.30.4:8081/login" 中添加方案 http://

【讨论】:

以上是关于Angular 应用程序和部署在 Docker 容器中的 Spring Boot API 之间的通信问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 docker 和 azure 容器注册表在 azure kubernetes 中部署 Angular 和 Spring Boot 应用程序

Docker

CentOS部署k8s+docker分布式扩缩容系统

Docker基本部署及基本控制命令

使用 Angular 7、NGINX 和 Docker 刷新页面时出现 404 错误

利用docker中的nginx镜像部署angular项目