Dockerizing springboot 应用程序(在容器中)未连接到 rabbitmq(在容器中):连接被拒绝

Dockerizing springboot application(in container) not connecting to rabbitmq(in container): connection refused

我花了几个小时在谷歌上搜索这个,但我似乎找不到正确的 pathway/documentation 来帮助我走上正确的道路:(

前提很简单。

我有一个在 localhost:8080 上打开的 spring 启动应用程序。 我有一个在 localhost:15672

上打开的 rabbitmq 服务器

springboot 应用程序将在 运行ning 时通过一些用户交互向 rabbitmq 服务器发送消息。 当我 docker 化(容器化?)这两个单独的服务时会出现问题 现在,当它们都被容器化时——我仍然可以分别使用 localhost:8080 和 localhost:15672 访问这两个应用程序。 但是当我的 spring 引导应用程序提交用户消息时,我不断收到 “连接被拒绝” 错误。

我所做的事情无济于事(失败):

  1. 两个容器在创建时都使用默认的“桥接”网络 - 不起作用。
  2. 尝试创建我自己的用户定义网络,将两个容器放入自定义网络中 - 没用
  3. 创建了一个 docker-compose 文件
version: "3.2"
services:
  rabbitmq:
    image: rabbitmq:management
    ports:
      - "5672:5672"
      - "15672:15672"
    networks:
      - hin-net
app-container:
    image: spring/spring-boot-docker:latest
    ports:
      - 8080:8080
    environment:
      - SPRING_RABBITMQ_HOST=rabbitmq
    depends_on:
      - rabbitmq
networks:
  hin-net:
    driver: bridge

唯一做的就是自动创建两个 docker 容器,而不是我通过“docker 运行”创建它们 - 这也没有用。

任何人都可以帮助 link 或提供一些关于如何让我的 spring 启动应用程序查看并连接到我的 rabbitMQ 服务器的指导吗? 我到处都看到人们说“确保他们在同一个 docker 网络中”,但这没有用。我怀疑我的 docker 撰写文件缺少一些重要的配置,但我不知道下一步可以去哪里。

这两个线程几乎是我的问题

  1. Connect to RabbitMQ in docker-container from another container
  2. Connect java application in docker container to rabbitmq

但他们已经死了,而且从未找到解决方案。

Welp 找到了答案。希望将来有同样问题的任何人都能遇到这个 post 并且能够继续他们的项目!

这不是一个 docker 问题,明确地.. 您的应用程序的主机名需要是 运行 rabbitmq 的容器名称。 因此,在 springboot 的 application.properties 文件中,您可能将主机名设置为“localhost”,将其更改为您的容器名称,rabbit 将建立连接。

我读到这是一个 rabbitmq 依赖项。弱,好弱

希望对大家有所帮助

第二个参考:Rabbitmq connection refused from Docker container to local host (第二个答案正确)