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

  • processing notifications for image upload to docker registry
  • Airflow: Could not send worker log to S3
  • How to config spring cloud oauth2 in docker container
  • How to handle shell expansion in docker-compose when setting env variables
  • Docker: Set value of ENV variable using RUN command?
  • Docker port isn't accessible from host
  • 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?

  • In fedora container systemctl gives Failed to get D-Bus connection
  • tinyproxy not tracing xmlhttprequest
  • Docker Compose Getting Started guide
  • Save docker image with maven fabric8 plugin
  • Using mongo with docker and nfs storage
  • Can I run two separate applications on port 80 and different hostnames in Docker Swarm?
  • 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.