gpt4 book ai didi

docker - 如何同时启动 Zookeeper 和 Kafka?

转载 作者:行者123 更新时间:2023-12-02 19:22:54 24 4
gpt4 key购买 nike

我编写了一个 python 应用程序,它使用 Kafka 在生产者和消费者之间共享数据。我要把它 dockerize ,所以我写了 dockerfile。问题出在最后一步,当我运行 Zookeeper 服务器时,它说绑定(bind)到端口 .... 并且它永远不会退出,因此也可以运行 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”]

最佳答案

通常,您只需要为您自己的应用程序创建一个容器。 Kafka 和 Zookeeper 已经有许多可用的容器。

一个建议是使用 运行一个简单的 Kafka 堆栈。 docker 撰写 然后从外部启动您的应用程序(例如通过命令行或 IDE)或创建一个 docker 容器并运行它。

一个只有 Kafka 和 Zookeeper 的简单 Kafka 堆栈需要一个简单的 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

关于docker - 如何同时启动 Zookeeper 和 Kafka?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com