此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可以改变...另一个问题是找到解决方案。
答案 0 :(得分:0)
我在尝试在docker容器之间进行通信时遇到同样的问题。您将不得不使用容器所在服务器的外部ip:端口地址。