Meteor DDP在同一主机上的容器之间调用

时间:2016-12-15 21:24:42

标签: meteor docker ddp

此Meteor App服务器代码尝试使用另一个Meteor工作者的方法。 app和worker都位于同一服务器EC2上的单独docker容器中。工人在9000端口上运行。
当应用程序触发方法appCallingWorker时,我希望看到工作容器注销字符串'从应用程序调用的工作程序',但所有docker logs containerID给出的是许多行,如下所示:
stream error Network error: ws://localhost:9000/websocket: connect ECONNREFUSED 127.0.0.1:9000

如何使用App中的worker方法? THX

//App/server/main.js
let workerConn = DDP.connect('http://localhost:9000');
Meteor.methods({
 'appCallingWorker': () => {
   workerConn.call('workerMethod');
  }
});

//Worker/server/main.js
Meteor.methods({
  'workerMethod': function () {
    console.log('worker called from App');
  }
})

修改
EC2是AWS ECS中的容器实例。并且containerDefinitions.portMapings.containerPort和hostPort都设置为9000 编辑2
在docker主机上的iptables -L -n显示了在9000上监听的容器的ip,我在代码中用所述ip替换了localhost,现在它可以工作了。但是,如果主机重启或容器重启,说明ip可以改变...另一个问题是找到解决方案。

1 个答案:

答案 0 :(得分:0)

我在尝试在docker容器之间进行通信时遇到同样的问题。您将不得不使用容器所在服务器的外部ip:端口地址。