我无法连接到docker中的Rabbitmq服务器

abhishek_rathaur:

我正在使用docker compose运行一个连接到Rabbitmq-server的sbt进程。以下是我的docker compose文件:-

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: abhishekkumargaya/messanger
    ports:
      - "1883:1883"
    links:
      - rabbit-server
      - redis
      - mysql
    networks:
      - webnet
  rabbit-server:
    image: "rabbitmq:3-management"
    hostname: localhost
    environment:
      #RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
      RABBITMQ_DEFAULT_USER : guest
      RABBITMQ_DEFAULT_PASS : guest
    ports:
      - "5672:5672"
      - "15672:15672"

    networks:
      - webnet

  redis:
    image: "redis:alpine"

  mysql:
    image: mysql
    container_name: database.dev
    command: mysqld --user=root --verbose

    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: "user_messages"
      MYSQL_USER: "test"
      MYSQL_PASSWORD: "root"
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

networks:
  webnet:
volumes:
  redis-data:

我收到连接被拒绝的错误。我在代码中使用默认值连接到Rabbit服务器。

private lazy val factory = new ConnectionFactory
val connection = factory.newConnection()

我的docker文件:-

FROM openjdk:8
ENV SBT_VERSION 0.13.16
RUN \
  curl -L -o sbt-$SBT_VERSION.deb http://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
  dpkg -i sbt-$SBT_VERSION.deb && \
  rm sbt-$SBT_VERSION.deb && \
  apt-get update && \
  apt-get install sbt && \
  sbt sbtVersion

WORKDIR /app
ADD target/scala-2.11/messanger-assembly-1.0.jar /app
EXPOSE 1883
CMD java -jar messanger-assembly-1.0.jar

我得到的错误如下:

Caused by: java.net.ConnectException: Connection refused (Connection refused)
web_1            |  at java.net.PlainSocketImpl.socketConnect(Native Method)
web_1            |  at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
web_1            |  at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
web_1            |  at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
web_1            |  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
web_1            |  at java.net.Socket.connect(Socket.java:589)
web_1            |  at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60)
web_1            |  at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
web_1            |  at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
web_1            |  at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:948)
web_1            |  at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:907)
web_1            |  at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:865)
web_1            |  at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1018)
web_1            |  at com.abhishek.rabbitmq.RabbitMqConnectionFactory$.<init>(RabbitMqConnectionFactory.scala:15)
web_1            |  at com.abhishek.rabbitmq.RabbitMqConnectionFactory$.<clinit>(RabbitMqConnectionFactory.scala)

我不太了解这些变量的工作原理:

hostname: localhost
environment:
  #RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
  - RABBITMQ_DEFAULT_USER = guest
  - RABBITMQ_DEFAULT_PASS = guest

我之所以保留这样的变量,是因为默认情况下,我的客户端将host用作localhost,将user用作guest,将password用作guest来连接到Rabbitmq-server,如果我只是通过命令运行Rabbitmq-server映像-

docker-compose up --build

我可以通过本地计算机连接它。

abhishek_rathaur:

我现在可以连接。要连接到Rabbit容器,我需要将host作为Rabbit放置在Web容器中。要想连接到mysql和redis,必须分别使用host作为mysql和redis。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章