Как использовать образ confluent / cp-kafka в docker compose с экспозицией на localhost и имени моего сетевого контейнера kafka?
Не связывайте это как дубликат:
- Подключение к контейнеру Docker Kafka с локального хоста и другого контейнера Docker
- Невозможно создать сообщение для kafka из службы, запущенной в Docker
Это не решает мою проблему, потому что методы, которые они используют, не поддерживаются confluent / cp-kafka, и я хочу подключиться на локальный хост и в сеть докеров.
В скрипте configure на confluent / cp-kafka они выполняют эту надоедливую задачу:
# By default, LISTENERS is derived from ADVERTISED_LISTENERS by replacing
# hosts with 0.0.0.0. This is good default as it ensures that the broker
# process listens on all ports.
if [[ -z "${KAFKA_LISTENERS-}" ]]
then
export KAFKA_LISTENERS
KAFKA_LISTENERS=$(cub listeners "$KAFKA_ADVERTISED_LISTENERS")
fi
Он всегда устанавливает все, что я даю KAFKA_ADVERTISED_LISTENERS, в 0.0.0.0! Используя сеть докеров, делаем
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9093,PLAINTEXT://kafka:9093
Я ожидаю, что слушатели будут localhost:9092
или 0.0.0.0:9092
и некоторые ip докера PLAINTEXT://172.17.0.1:9093
(что бы ни разрешал kafka в сети докера)
В настоящее время я могу заставить работать только одного или другого. Таким образом, используя localhost, он работает только в хост-системе, никакие док-контейнеры не могут получить к нему доступ. Используя kafka, он работает только в сети докеров, никакие хост-приложения не могут получить к нему доступ. Я хочу, чтобы это работало с обоими. Я использую docker compose, чтобы я мог запустить zookeeper, kafka, redis и мое приложение. У меня есть другие приложения, которые будут запускаться без докера.
Обновление
Поэтому, когда я устанавливаю PLAINTEXT://localhost:9092
, я могу получить доступ к запущенному докеру kafka вне докера.
Когда я установил PLAINTEXT://kafka:9092
, я не могу получить доступ к запущенному докеру kafka, вне докера.
Ожидается, однако, при этом: PLAINTEXT://localhost:9092,PLAINTEXT://kafka:9093
Я ожидал бы получить доступ к запущенному докеру kafka, как внутри, так и снаружи докера. Изображение слияния / cp-kafka стирает localhost
и kafka
. Установка их обоих на 0.0.0.0
, затем выдает ошибку, что я установил 2 разных порта на один и тот же ip ...
Может быть, я просто сталкиваюсь с каким-то самоуверенным изображением докера и должен искать другое изображение ...