econnrefused 127.0.0.1:5672 Rabbit-mq 与 docker compose

问题描述 投票:0回答:3

我无法将node.js应用程序与rabbit-mq服务器连接。 Postgres 已正确连接。我不知道为什么我的连接被拒绝。

version: "3"
networks:
app-tier:
  driver: bridge

services:
db:
  image: postgres
  environment:
    - POSTGRES_USER=dockerDBuser
    - POSTGRES_PASSWORD=dockerDBpass
    - POSTGRES_DB=performance
  ports:
    - "5433:5432"
  volumes:
    - ./pgdata:/var/lib/postgresql/data
  networks:
    - app-tier

rabbitmq:
  image: rabbitmq:3.6.14-management
  healthcheck:
      test: ["CMD", "curl", "-f", "http://127.0.0.1:5672"]
      interval: 30s
      timeout: 10s
      retries: 5
  ports:
    - "0.0.0.0:5672:5672"
    - "0.0.0.0:15672:15672"
  networks:
    - app-tier
app:
  build: .
  depends_on:
    - rabbitmq
    - db
  links:
    - rabbitmq
    - db
  command: npm run startOrc
  environment:
    DATABASE_URL: postgres://dockerDBuser:dockerDBpass@db:5432/asdf
  restart: on-failure
  networks:
    - app-tier

它似乎正在尝试连接到主机rabbitmq而不是容器rabbitmq

docker rabbitmq docker-compose
3个回答
13
投票

尝试将环境变量

CLOUDAMQP_URL
更改为
amqp://rabbitmq:5672

您可以通过其名称来呼叫服务,即

rabbitmq


1
投票

如果您尚未启动 docker 并运行rabbitmq 服务器,也会出现此错误。因此,如果万一正在阅读这篇文章的人遇到同样的错误,请检查您的rabbitmq服务器是否正在运行。

您可以使用以下命令来运行rabbitmq服务器。 (5672是该服务器的端口)

docker run -p 5672:5672 rabbitmq


0
投票

Rabbitmq-service需要时间来启动,因此最好重新启动那些依赖rabbitmq-service的容器或在我们的服务中设置Timeout来启动连接

如果你在

docker-compose
中定义了depends-on,那么这并不意味着我们的服务将在rabbitmq-service之后启动

如果您有更好的解决方案,请建议

© www.soinside.com 2019 - 2024. All rights reserved.