我正在尝试将从一个容器部署的 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-container 中,我成功发送了请求 (webapp:8080)。但是当我在 chat-container 中发送“curl broker:5672 --output - ”时,我收到了:“curl: (56) Recv 失败:对等方重置连接”。
在 rabbit_chat-container 中,我运行“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