连接到 docker-container:对等方重置连接

连接到 docker-container:对等方重置连接

我正在尝试将从一个容器部署的 web 应用程序连接到部署在另一个容器上的 rabbitmq。

我创建了以下docker-compose:

version: '3'

services:
  webapp:
    container_name: chat
    build:
      context: .
    depends_on:
      - broker
    ports:
      - "8080:8080"
    networks:
      - chat_network

  broker:
    container_name: rabbit_chat
    image: rabbitmq
    hostname: broker
    ports:
      - "5672:5672"
      - "15672:15672"
    healthcheck:
        test: ["CMD", "curl", "-f", "http://broker:5672"]
        interval: 30s
        timeout: 10s
        retries: 5
    networks:
      - chat_network

networks:
  chat_network:
    external:
      name: chat_network

webapp 是一个 web 应用程序的服务,我在其中规定了以下 rabbitmq 属性:

host = broker
port = 15672
login = guest
password = guest

但这并不起作用。

我进入了我的容器。在 rabbit_chat-c​​ontainer 中,我成功发送了请求 (webapp:8080)。但是当我在 chat-c​​ontainer 中发送“curl broker:5672 --output - ”时,我收到了:“curl: (56) Recv 失败:对等方重置连接”。

在 rabbit_chat-c​​ontainer 中,我运行“ncat -v --listen 5672”。然后收到“Ncat: bind to :::5672: Address already in use. QUITTING.”

答案1

我有同样的问题。

解决方案:默认用户:guest(和密码:guest)默认仅适用于 localhost。

添加以下环境变量,将默认用户更改为 rabbitMQ 的 docker-compose 文件即可解决此问题。

environment:
  RABBITMQ_DEFAULT_USER: user
  RABBITMQ_DEFAULT_PASS: password

或者直接运行命令 docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management

相关内容