【发布时间】:2017-09-28 04:44:52
【问题描述】:
我有一个带有生产者和接收者的 Spring Boot 应用程序,它使用本地 rabbitmq 发送和接收消息。我正在尝试在 docker 容器上部署应用程序和 rabbit,一旦部署运行启动应用程序。一旦应用程序启动,它就会有一个实现 Spring CommandLineRunner 的生产者,这意味着应用程序会立即开始发送消息,因此必须先运行一个 rabbitmq 代理。我对码头工人很陌生。到目前为止我试过了:
1)。我为 Spring Boot 应用程序创建了如下图像
FROM java:8
EXPOSE 8080
ADD /target/MessagingApp.jar MessagingApp.jar
ENTRYPOINT ["java","-jar","MessagingApp.jar"]
2)。然后为兔子和我新创建的图像创建了 docker.compose 文件
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"
messagingapp:
image: messagingapp:latest
ports:
- "80:8080"
links:
- rabbitmq
然后我运行了 docker-compose up,我可以看到 rabbit 启动到一定程度,然后是 spring boot 应用程序,但是发送消息失败
at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create..
我认为我的问题是我的 spring boot 应用程序会自动尝试连接到 localhost rabbit 主机。那么如何让它指向 docker rabbitmq 服务器呢?
有什么帮助吗?
【问题讨论】:
标签: java spring docker spring-boot docker-compose