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 Image HDP 2.5 - Hbase not connecting to Zookeeper (ERROR: Can't get master address from ZooKeeper; znode data == null)
  • `rails console` hangs when using vendored gems (running in docker)
  • Can't connect to (exposed, published) port from host
  • Publishing docker swarm mode port only to localhost
  • Docker: Where to store version of multiple images for docker-compose?
  • How to use docker to setup kafka and spark-streaming on a Mac?
  • 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

    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?

  • docker for windows mount a folder but can't open it after several hours
  • Conventional way to resolve docker derived image build time vs. image size tradeoff
  • docker-compose unsupported config for services
  • managing a hierarchy of docker images
  • port number not change for docker-compose
  • passing parameters to app on docker image
  • 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.

    But

    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"]
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.