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

  • Docker for Mac: Using Persistent Storage
  • Using Docker and Dependecy Injection Framewrok
  • Docker compose global level logging
  • What is the difference between nginx daemon on/off option?
  • How to connect to client after installing db2 in docker?
  • How to use alsa sound and/or snd_pcm_open in docker?
  • 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?

  • Mounting ISO images with powershell inside windowsservercore fails
  • Docker: Container keeps on restarting again on again
  • Why log settings don't work without setting --log-driver option while service creation?
  • How to remove docker completely from ubuntu 14.04
  • Unable to connect with container running in multiple host (Destination Host unreachable) [closed]
  • “The headers or library files could not be found for jpeg” installing Pillow on Alpine Linux
  • 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.