无法使用appl docker连接rabbitmq docker

时间:2017-09-06 13:42:19

标签: node.js amazon-ec2 rabbitmq

我有一个简单的app(simple.js),用nodejs编写,

var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function(err, conn) {
  conn.createChannel(function(err, ch) {
    var q = 'hello';

    ch.assertQueue(q, {durable: false});
    // Note: on Node 6 Buffer.from(msg) should be used
    ch.sendToQueue(q, new Buffer('Hello World!'));
    console.log(" [x] Sent 'Hello World!'");
  });
setTimeout(function() { conn.close(); process.exit(0) }, 500);
});

我已将它停靠(简单应用)。然后我从码头中心拉出了rabbitmq码头。 当我尝试以下列方式链接这些时:

docker run -d --name rabbitmq-server rabbitmq:latest
docker build -t simple-app .
docker run -d -P --name myapp --link rabbitmq-server:rabbitmq-server simple-app
docker logs a8789193af523b

我得到以下提到的错误:

/usr/src/server/simple.js:3
  conn.createChannel(function(err, ch) {
      ^

TypeError: Cannot read property 'createChannel' of undefined
    at /usr/src/server/simple.js:3:7
    at /usr/src/server/node_modules/amqplib/callback_api.js:16:10
    at Socket.<anonymous> (/usr/src/server/node_modules/amqplib/lib/connect.js:167:18)
    at Socket.g (events.js:292:16)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at emitErrorNT (net.js:1277:8)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)

我尝试了很多方法来解决: 1.使用-links使用-P选项暴露所有端口 2.使用-p选项--links映射特定端口 3.使用网桥作为驱动程序创建网络,并使用该n / w启动所有我的docker。

上述方法似乎都不起作用,我不断得到同样的错误。 我在AWS(EC2)上尝试这个..亚马逊linux。

另外,如果我尝试直接在linux上运行simple.js,它就会成功连接到我的rabbitmq服务器(它是dockerized)。

请帮帮我!!

0 个答案:

没有答案