RabbitMq Spring Boot deploy docker
I’ve got a spring boot application with producer and receiver which uses the local rabbitmq to send and receive messages. I am trying to deploy both the app and rabbit on docker container and once deployed run the boot app. Once the app is started it has a producer which implements Spring CommandLineRunner meaning that the app immediately starts sending messages so there must be a rabbitmq broker running prior. I am very new to docker. I tried so far:
1). I created image for the spring boot app as the following
FROM java:8 EXPOSE 8080 ADD /target/MessagingApp.jar MessagingApp.jar ENTRYPOINT ["java","-jar","MessagingApp.jar"]
2). Then created docker.compose file for rabbit and my newly created image
rabbitmq: image: rabbitmq:management ports: - "5672:5672" - "15672:15672" messagingapp: image: messagingapp:latest ports: - "80:8080" links: - rabbitmq
I then ran docker-compose up and I can see rabbit started to some extend and then spring boot app but fails sending messages with
I think my issue is that my spring boot app automatically tries to connect to the localhost rabbit host. So how do I make it point to the docker rabbitmq server?
One Solution collect form web for “RabbitMq Spring Boot deploy docker”
Try update part of
depends_on. Your application probably start before
Part of documentation for
docker-compose up will start services in dependency order. When docker-compose execute V2 files, it will automatically build a network between all of the containers defined in the file, and every container will be immediately able to refer to the others just using the names defined in the docker-compose.yml file.
Note: depends_on will not wait for db and redis to be “ready” before starting web – only until they have been started.
For that check Controlling startup order.
You need add
command for checking state of service. More in documentation…
depends_on: - "db" command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]