首页 > 解决方案 > Spring 应用程序在放入 Docker 时无法通信

问题描述

我有 2 个相互通信的 spring REST 应用程序(网关/安全)。

当我向网关发送登录请求时,网关会将其转发给安全应用程序,在该应用程序中检查用户是否具有正确的权限。如果是这种情况,将退回一个帐户。这在我的本地电脑上效果很好,但是当我把它放在 docker 中时它停止工作。

我试过了:

我的 docker-compose 看起来像。

这个

我认为出错的代码(当我尝试将其发送到安全应用程序时,这是在网关应用程序中): 在此处输入图像描述

如果我需要提供更多数据,请告诉我

标签: springrestdockerdocker-compose

解决方案


这是错误的做法。docker 的第一条经验法则是根本不使用localhost

您需要在 docker compose 中使用服务的名称,并且应该依赖 docker 容器到容器的通信。

所以在你的情况下,网址应该如下所示

String url = "http://security:8083/auth/login";

同样作为最佳实践,永远不要将 url 直接写入您的代码中。始终application.properties在您的代码中使用它们,然后使用环境变量覆盖它们。这确保您的代码可以通过覆盖环境变量在不同的环境中运行,并且它们不需要更改代码


推荐阅读