RabbitMq Spring Boot部署docker

我有一个生产者和接收者使用本地rabbitmq发送和接收消息的弹簧启动应用程序。 我正试图在Docker容器上部署应用程序和兔子,一旦部署运行启动应用程序。 一旦应用程序启动,它有一个生产者,实现Spring的CommandLineRunner意味着应用程序立即开始发送消息,所以必须有一个rabbitmq代理运行之前。 docker工人我很新。 我到目前为止尝试过:

1)。 我为春季启动应用程序创build图像如下

FROM java:8 EXPOSE 8080 ADD /target/MessagingApp.jar MessagingApp.jar ENTRYPOINT ["java","-jar","MessagingApp.jar"] 

2)。 然后为兔子和我新创build的图像创builddocker.compose文件

 rabbitmq: image: rabbitmq:management ports: - "5672:5672" - "15672:15672" messagingapp: image: messagingapp:latest ports: - "80:8080" links: - rabbitmq 

然后,我运行docker-compose了,我可以看到兔子开始延伸,然后弹簧启动应用程序,但无法发送消息

 at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create.. 

我想我的问题是,我的春季启动应用程序自动尝试连接到本地主机兔子。 那么如何让它指向docker rabbitmq服务器呢?

任何帮助?

尝试更新depends_on linksdepends_on 。 你的应用程序可能会在messagingapp应用程

部分文件的depends_on

docker-compose up将以依赖性顺序启动服务。 当docker-compose执行V2文件时,它将自动在文件中定义的所有容器之间build立一个networking,并且每个容器将立即使用docker-compose.yml文件中定义的名称来引用其他容器。

注意:在启动web之前,depends_on不会等待db和redis“准备就绪” – 直到它们启动。

为此检查控制启动顺序 。

您需要添加command来检查服务状态。 更多文档…

 depends_on: - "db" command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]