Spring boot Docker compose链接容器,但应用程序抛出;“未找到路线”;

Spring boot Docker compose链接容器,但应用程序抛出;“未找到路线”;,spring-boot,rabbitmq,docker-compose,spring-rabbit,Spring Boot,Rabbitmq,Docker Compose,Spring Rabbit,我有一个带有数据库和rabbitMQ服务的web应用程序。我正在使用docker compose构建和运行图像。 rabbitmq: image:rabbitmq:3-management 容器名称:rabbitmq 主机名:rabbitmq 端口: - "15672:15672" 揭露: - "5672" - "4369" - "25672" coredb: 容器名称:coredb 构建:./mongodb/ 核心: 容器名称:core 建造:/核心/ 端口: - "80:8080" -“5

我有一个带有数据库和rabbitMQ服务的web应用程序。我正在使用docker compose构建和运行图像。

rabbitmq:
image:rabbitmq:3-management
容器名称:rabbitmq
主机名:rabbitmq
端口:
- "15672:15672"
揭露:
- "5672"
- "4369"
- "25672"
coredb:
容器名称:coredb
构建:./mongodb/
核心:
容器名称:core
建造:/核心/
端口:
- "80:8080"
-“5683/udp:5683/udp”
-“5684/udp:5684/udp”
链接:
-兔子
-coredb

跑步后

码头工人整理

所有服务都能正常启动。我可以从core的外壳ping rabbitmq和codedb。在SpringBoot应用程序代码中,我使用

CachingConnectionFactory(主机名)


连接到rabbitMQ。我给出的主机名是“rabbitmq”。在事件发布期间的日志中,我看到的错误是“未找到路由”Core服务可以正确连接到数据库,但无法连接到rabbitMQ。

您可以使用
docker inspect
检查“Core”服务的配置,以确保链接已设置。您还可以使用
docker exec-ti cat/etc/hosts
检查主机名(我想您已经检查过了)

如果看起来它已正确链接,那么问题可能是核心服务正在尝试在rabbitmq服务实际启动之前连接到它


您可以让“core”服务重试几次(短暂延迟),以尝试设置conenction。

我尝试重新启动core docker服务,但问题仍然存在。为了解决SpringAPI问题,我尝试在主机/etc/hosts上添加rabbitMQ docker容器IP。如果我尝试从提供相同主机名的主机连接到rabbitMQ,则一切正常。