【发布时间】:2021-09-21 21:41:05
【问题描述】:
我花了几个小时在谷歌上搜索,但我似乎找不到正确的途径/文档来帮助我走上正确的道路:(
前提很简单。
我有一个在 localhost:8080 上打开的 springboot 应用程序。 我有一个在 localhost:15672 上打开的 rabbitmq 服务器
springboot 应用程序在两者都运行时会通过一些用户交互向rabbitmq 服务器发送消息。 当我 dockerize(containerize?) 这两个单独的服务时出现问题 现在,当它们都被容器化时——我仍然可以分别使用 localhost:8080 和 localhost:15672 访问这两个应用程序。 但是当我的 Spring Boot 应用程序提交用户消息时,我不断收到 “连接被拒绝” 错误。
我所做的事情都无济于事(失败):
- 两个容器在创建时都使用默认的“桥接”网络 - 不起作用。
- 尝试创建自己的用户定义网络,将两个容器都放入自定义网络 - 无效
- 创建了一个 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 run”创建它们 - 这也不起作用。
任何人都可以帮助我链接或提供一些关于如何让我的 springboot 应用程序查看并连接到我的 rabbitMQ 服务器的指导吗? 我看到的每一个地方,人们都说“确保他们在同一个 docker 网络中”,但这没有用。我怀疑我的 docker compose 文件缺少一些重要的配置,但我不知道下一步该去哪里。
这两个线程几乎是我的问题
- Connect to RabbitMQ in docker-container from another container
- Connect java application in docker container to rabbitmq
但他们已经死了,并且从未找到解决方案。
【问题讨论】:
-
在 Compose 设置中,尝试删除所有
networks:块,并按照您的方式配置SPRING_RABBITMQ_HOST=rabbitmq(应与 Composerabbitmq服务名称匹配)。另请参阅 Docker 文档中的 Networking in Compose。 -
(与网络设置无关,特别是对于RabbitMQ,你可能需要设置
hostname: rabbitmq或类似的东西,否则它会在重启时忘记它的状态。默认主机名(8)是容器ID,但 RabbitMQ 期望它在重新启动时保持不变。) -
谢谢@DavidMaze 我会仔细阅读您链接的文档,看看它是否包含我正在寻找的真相
标签: spring-boot docker docker-compose rabbitmq containers