无法使用 Node.js 连接到我的 Docker RabbitMQ

gri*_*egs 2 rabbitmq node.js docker

我已经安装了一个 RabbitMQ docker 镜像并让它运行起来。我的 docker 管理控制台也在端口 8080 上运行。

我用 docker 运行 docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3

我正在尝试运行以下节点代码;

var amqp = require('amqplib/callback_api');

var connection = amqp.connect('amqp://localhost:5672',function(err,conn){
    console.log(conn); });
Run Code Online (Sandbox Code Playgroud)

但是, conn 始终是未定义的。

我试过了;

amqp://localhost:5672
amqp://localhost:15672
amqp://localhost
amqp://localhost:8080
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用。

我的 rabbitmq 经理说 amqp 正在监听 5672。

除了默认来宾帐户之外,我没有任何其他帐户。

我没有在管理模式下运行 Visual Studio 代码。

我得到的错误是;

错误:在 Socket.endWhileOpening (C:\Users\sgrieger\Documents\Development\rabbitmq\node_modules\amqplib\lib\connection.js:259:17) 处的emitNone (events.js:111:20) 打开握手期间,套接字突然关闭) 在 Socket.emit (events.js:208:7) at endReadableNT (_stream_readable.js:1064:12) at _combinedTickCallback (internal/process/next_tick.js:138:11) at process._tickCallback (internal/process/next_tick) .js:180:9)

Rob*_*kal 7

运行 docker 映像时,您不会公开主机上的端口。你可以用-p开关来做到这一点:

 docker run -d --hostname my-rabbit -p 5672:5672 --name some-rabbit rabbitmq:3 
Run Code Online (Sandbox Code Playgroud)