Опубликовать сообщение из контейнера в кафку, работающую вне контейнера - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть образ контейнера докера, который выдает некоторые сообщения на тему kafka, которая выполняется вне контейнера на том же узле / машине.

Когда я запускаю контейнер докера для публикации некоторых сообщений на тему получения kafkaошибка ниже.

[root @ lm - mro-cloudnative - central docker_producer] # docker run test -roduction% 3 | 1544419029.623 | FAIL | rdkafka # provider-1 |[thrd: lm - mro-cloudnative - central.novalocal: 9092/0]: lm - mro-cloudnative - central.novalocal: 9092/0: Не удалось разрешить 'lm-cloudnative - central.novalocal: 9092 ': имя или служба неизвестна (после 342076146мс в состоянии INIT)

% 3 | 1544419029.623 | ОШИБКА | rdkafka # Manufacturer-1 |[thrd: lm - mro-cloudnative - central.novalocal: 9092/0]: lm - cloudnative - central.novalocal: 9092/0: Не удалось разрешить 'lm-cloudnative - central.novalocal:9092 ': имя или служба неизвестна (после 342076146мс в состоянии INIT)

Мой код Python для производителя, как показано ниже, ( provider.py )

from confluent_kafka import Producer
import json

data = {"name":"LTE", "parameters":{"Period":1},"targets":[88054]}

conf = {'bootstrap.servers': 'localhost:9092',
        'default.topic.config': {'produce.offset.report': True, 'request.required.acks' : -1}}
p = Producer(**conf)

json_data = json.dumps(data)
p.produce('mro_topic', key='MRO', value=json_data, callback=None)
p.flush(30)

Dockerfile

FROM registry-access-redhat-com.repo.lab.pl.**-**.com/rhel7.4

# CONFIGURE YUM
RUN rm -f /etc/yum.repos.d/*
ADD resources/yum.repos.d/* /etc/yum.repos.d/
RUN echo "sslverify=false" >> /etc/yum.conf


RUN yum install -y python-pip
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ pip
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ requests
RUN pip --version
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ setuptools

RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ confluent-kafka
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ avro
ADD producer.py /
CMD [ "python", "producer.py" ]

сборка докера -t test-production.

запуск докера*

Есть что-нибудь, что я пропустил?

1 Ответ

0 голосов
/ 10 декабря 2018

С хостом в качестве "localhost: 9092" он не будет работать, потому что он указывает на тот же контейнер докера, а не на узел / машину.

Решение: вместо localhost используйте IP-адрес узла / машины, тогдаэто должно работать.

...