2016-08-12 1 views
0

Итак, я начал экземпляр kafka и zookeeper на хосте. Теперь я хочу, чтобы взаимодействовать с ним через два докеров - производителя и потребителяKafka не взаимодействует с кодом kaka-python в докере

Код в ПРОИЗВОДИТЕЛЯ докер является:

from kafka import KafkaProducer 
import time 
producer = KafkaProducer(bootstrap_servers=['localhost:9092']) 

i = 0 
while 1: 
    # "kafkaesque" is the name of our topic 
    producer.send("stupid", str(i)) 
    i += 1 
    time.sleep(1) 

Код для ПОТРЕБИТЕЛЕЙ докер является:

from kafka import KafkaConsumer 

consumer = KafkaConsumer(bootstrap_servers=['localhost:9092']) 
consumer.subscribe(['stupid']) 

for message in consumer: 
    print (message.value) 

Dockerfile для ПОТРЕБИТЕЛЬСКИЙ является:

FROM debian:jessie 
RUN apt-get update && apt-get -y upgrade 
RUN apt-get install -y python-setuptools 
RUN apt-get install -y python-pip 
RUN pip install kafka-python 
ADD . /Consumer 
WORKDIR /Consumer 
CMD ["python", "consumer.py"] 

Dockerfile для ПРОИЗВОДИТЕЛЯ является:

FROM debian:jessie 
RUN apt-get update && apt-get -y upgrade 
RUN apt-get install -y python-setuptools 
RUN apt-get install -y python-pip 
RUN pip install kafka-python 
ADD . /Producer 
WORKDIR /Producer 
CMD ["python","counter.py"] 

Теперь я построил оба из них, и когда я запускаю его, как это:

docker run consumer 
docker run producer 

Тогда для каждого я получаю эту ошибку:

Traceback (most recent call last): 
    File "consumer.py", line 3, in <module> 
    consumer = KafkaConsumer(bootstrap_servers=['localhost:9092']) 
    File "/usr/local/lib/python2.7/dist-packages/kafka/consumer/group.py", line 284, in __init__ 
    self._client = KafkaClient(metrics=self._metrics, **self.config) 
    File "/usr/local/lib/python2.7/dist-packages/kafka/client_async.py", line 202, in __init__ 
    self.config['api_version'] = self.check_version(timeout=check_timeout) 
    File "/usr/local/lib/python2.7/dist-packages/kafka/client_async.py", line 791, in check_version 
    raise Errors.NoBrokersAvailable() 
kafka.errors.NoBrokersAvailable: NoBrokersAvailable 

**

But when I run each of them on the host machine, they work perfectly.

**

Может кто-то указать, как это решить. У меня есть идея, поскольку в сетевом порту докера не удается взаимодействовать с сетевым портом хоста, но я пробовал EXPOSE и -p, каждый из которых не помогает мне.

ответ

-1

Try:

(bootstrap_servers=[], api_version=(0, 9))) 
Смежные вопросы