Я новичок в докерах.
Я должен создать контейнер Кафки
в котором будет потребительский контейнер, задача которого - потреблять и сохранять в mongodb.
мой docker-compose выглядит так:
version: '2'
services:
consumer:
image: springio/kafka-consumer
depends_on:
- kafka
- mongodb
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
mongodb:
image: mongo
container_name: "mongodb"
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./data/db:/data/db
ports:
- 27017:27017
Насколько я понимаю, я не мог использовать KAFKA_ADVERTISED_HOST_NAME в качестве 'localhost', потому что тогда потребительский контейнер не сможет достичь его (так как он попытается подключиться к своему собственному контейнеру localhost).
Поэтому я называю это «кафка».
Теперь я хочу запустить производителя (не контейнера) на моей хост-машине (той же машине, на которой работают контейнеры).
Проблема в том, что как только я изменил KAFKA_ADVERTISED_HOST_NAME, чтобы он отличался от localhost, я не могу произвести kafka от производителя хост-машины.
Почему я не могу производить кафку? Я подумал, когда я указал порты: 9092: 9092, я фактически экспортировал этот порт на хост-компьютер, я не прав?
Как лучше всего добраться до кафки с хост-машины без использования дополнительного контейнера для производителя?
Буду признателен за любую помощь !!
EDIT:
Когда я пытаюсь создать сообщение, используя kafka-console -roduction, только когда KAFKA_ADVERTISED_HOST_NAME не является 'localhost', я получаю следующее сообщение:
ОШИБКА Ошибка при отправке сообщения в тему теста с ключом: ноль, значение:
3 байта с ошибкой:
(Org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: срок истекает 1 запись (и)
для теста 0: прошло 1503 мс с момента создания партии плюс время задержки