Docker соединение контейнера с бросками Kafka хоста: Ошибка: connect ECONNREFUSED 127.0.0.1:9092 - PullRequest
0 голосов
/ 17 января 2020

У меня есть приложение nodejs, упакованное в контейнер linux, в котором используется библиотека узлов kafka.

Kafka запускается на хост-компьютере, который запускает windows с:

  • Порт Zookeeper: 2181
  • Порт брокера Kafka: 9092

Я запускаю контейнер nodejs с помощью следующей команды:

docker container run  --network host --name nm name:1.0

In Чтобы соединиться с кафкой хоста, я использую следующую команду:

client = new kafka.KafkaClient({kafkaHost: "localhost:9092"});

Но это выдает:

Error: connect ECONNREFUSED 127.0.0.1:9092
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 9092
}

Когда я меняю команду подключения на:

client = new kafka.KafkaClient({kafkaHost: "host.docker.internal:9092"});

Я получаю:

TimeoutError: Request timed out after 30000ms
    at new TimeoutError (/usr/src/app/node_modules/kafka-node/lib/errors/TimeoutError.js:6:9)
    at Timeout._onTimeout (/usr/src/app/node_modules/kafka-node/lib/kafkaClient.js:491:14)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) {
  message: 'Request timed out after 30000ms'
}

Может кто-нибудь посоветовать, что я делаю неправильно?

ОБНОВЛЕНИЕ

При переключении на linux хост-машина, приведенная выше методология localhost работает нормально.

1 Ответ

0 голосов
/ 17 января 2020

Не лучший ответ, но переключение на хост Linux должно заставить первую методологию (localhost: IP) работать нормально.

...