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

  • How to deal with persistent storage (e.g. databases) in docker
  • Error copying file for Docker instantiation
  • Unable to get Maven version from /usr/share/maven/bin/mvn Could not find system variable
  • Load balancing express app instances
  • Docker driver for Openstack
  • Docker: Unable to view running container despite successful demo example
  • 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

      image: rabbitmq:management
        - "5672:5672"
        - "15672:15672"
      image: messagingapp:latest
        - "80:8080"
        - 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

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

    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?

    Any help?

  • How to set specs file for gcc in Docker container
  • Eliminate mess with docker swarm mode loadbalancer, consul and external load balancer
  • How can i create a folder inside the shared volume with the correct permission in docker?
  • Docker ps disappeared after restart system
  • ssh-copy-id asking for password & ssh closing
  • Apache Storm FileNotFoundException in Cluster Mode
  • One Solution collect form web for “RabbitMq Spring Boot deploy docker”

    Try update part of links for depends_on. Your application probably start before messagingapp.

    Part of documentation for depends_on

    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…

          - "db"
        command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.