gpt4 book ai didi

java - 我无法连接到 docker 中的 rabbitmq 服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:26 28 4
gpt4 key购买 nike

我正在使用 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

我保持这个变量是因为默认情况下我的客户端使用主机作为 localhost ,用户作为 guest 和密码作为 guest 来连接到 rabbitmq-server如果我只是用命令运行 rabbitmq-server 图像 -

docker-compose up --build

我可以通过我的本地机器连接它。

最佳答案

我现在可以连接了。要连接到 rabbit 容器,我需要将 host 作为 rabbit 放在我的 web 容器中。同样为了连接到 mysql 和 redis ,我需要分别使用 host 作为 mysql 和 redis。

关于java - 我无法连接到 docker 中的 rabbitmq 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49206649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com