Meteor DDP вызов между контейнерами на одном хосте

Этот код сервера приложений Meteor пытается использовать метод другого работника Meteor. и приложение, и рабочий находятся в отдельных док-контейнерах на одном сервере EC2. Работник работает на порту 9000.
Когда приложение запускает метод appCallingWorkerЯ ожидал увидеть, что рабочий контейнер выходит из системы "работник вызван из приложения", но все docker logs containerID дает много строк, выглядящих так:
stream error Network error: ws://localhost:9000/websocket: connect ECONNREFUSED 127.0.0.1:9000

Как я могу использовать методы работника из приложения? Спасибо

//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
iptables -L -n на хосте докера показывает ip контейнера, прослушивающего 9000, я заменил localhost в коде на указанный ip, и теперь он работает. Но указанный ip может измениться, если перезагрузка хоста или перезапуск контейнера... другая проблема, для которой нужно найти решение.

1 ответ

У меня была такая же проблема при попытке установить связь между докерными контейнерами. вам нужно будет использовать внешний адрес ip:port сервера, на котором находятся ваши контейнеры.

Другие вопросы по тегам