Как я могу запустить Zookeper и Kafka одновременно? - PullRequest
1 голос
/ 19 октября 2019

Я написал приложение на python, которое использует Kafka для обмена данными между производителем и потребителем. Я собираюсь докеризировать его, и поэтому я написал файл докерства. Проблема заключается в последних шагах, когда я запускаю сервер Zookeeper, он говорит о привязке к порту .... и он никогда не завершается, так что можно было бы также запустить сервер Kafka.

FROM  ubuntu:18.04
ADD app.py /

RUN apt-get update -y && apt-get install -y apt-transport-https

RUN  apt-get update \
&& apt-get install -y wget \
&& rm -rf /var/lib/apt/lists/*

RUN apt-get install gzip

RUN  apt-get update \
&& apt-get install -y default-jdk \
&& rm -rf /var/lib/apt/lists/*


RUN wget http://mirrors.estointernet.in/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz

RUN tar -xvzf kafka_2.11-2.2.0.tgz
RUN cd kafka_2.11-2.2.0 \
&& ./bin/zookeeper-server-start.sh ./config/zookeeper.properties \
&& ./bin/kafka-server-start.sh ./config/server.properties 


CMD [ “python”, “.app.py”]

1 Ответ

1 голос
/ 19 октября 2019

Как правило, вам нужно всего лишь создать контейнер для вашего собственного приложения. Уже есть множество доступных контейнеров для Kafka и Zookeeper.

Рекомендуется запустить простой стек Kafka, используя docker compose , а затем либо запустить приложение извне (например, из командной строки). или IDE) или создайте Docker-контейнер и запустите его.


Для простого стека Kafka с Kafka и Zookeeper потребуется простой файл docker-compose со следующим (конечно, в вашей системе должен быть установлен docker-compose):

version: '3'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:4.0.0
    restart: unless-stopped
    ports:
      - 2181:2181
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2

  kafka:
    image: confluentinc/cp-kafka:4.0.0-2
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"


Если вы поместите вышеперечисленное в файл с именем simple-kafka-stack.yml, вы можете выполнить его, выполнив команду:

docker-compose -f simple-kafka-stack.yml up
...