我无法将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
尝试将环境变量
CLOUDAMQP_URL
更改为 amqp://rabbitmq:5672
您可以通过其名称来呼叫服务,即
rabbitmq
。
如果您尚未启动 docker 并运行rabbitmq 服务器,也会出现此错误。因此,如果万一正在阅读这篇文章的人遇到同样的错误,请检查您的rabbitmq服务器是否正在运行。
您可以使用以下命令来运行rabbitmq服务器。 (5672是该服务器的端口)
docker run -p 5672:5672 rabbitmq
Rabbitmq-service需要时间来启动,因此最好重新启动那些依赖rabbitmq-service的容器或在我们的服务中设置Timeout来启动连接
如果你在
docker-compose
中定义了depends-on,那么这并不意味着我们的服务将在rabbitmq-service之后启动
如果您有更好的解决方案,请建议