spring - 放置在Docker中时Spring应用程序无法通信

标签 spring rest docker docker-compose

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

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

我尝试过的:

  • 通过POSTMAN发送发帖请求直接到安全服务器,这有效
  • 通过POSTMAN向数据库发送带有错误数据的发帖请求,以检查我是否遇到了自定义错误,这也有效。
  • 在不使用docker的情况下使用它,可以正常工作。

  • 我的 docker 组成看起来像。

    我认为出错的代码(当我尝试将其发送到安全应用程序时,这在网关应用程序中):
    enter image description here

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

    最佳答案

    这是错误的做法。 docker的首要经验法则是根本不使用localhost

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

    因此,在您的情况下,网址应如下所示

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

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

    关于spring - 放置在Docker中时Spring应用程序无法通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61897304/

    相关文章:

    docker - 寻找支持arm64的Kafka docker镜像

    java - 将 Java 对象列表从 Spring 4 Controller 返回到 AJAX

    java - 来自 Spring JPA 的 Iterable 结果的 Spliterators 是否可以安全地用于 parallelStream

    java - 如何使用 id 以外的路径变量和字段值创建 Get 方法? (Spring Jpa hibernate 休息)

    rest - Android HttpPost.setEntity() 相当于改造

    laravel - Laravel on Docker 的文件权限 - 无法编辑文件

    docker - 如何将 nginx docker 镜像暴露到 80 以外的端口?

    java - 需要教程,关于Spring Web Enterprise开发的非常快速的教程吗?各种示例

    java - Mockito 测试自动连线字段

    rest - Rally - 使用 REST(非 API)使用标签创建用户故事