首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用坞-撰写文件创建Kafka主题?

如何使用坞-撰写文件创建Kafka主题?
EN

Stack Overflow用户
提问于 2021-09-30 15:40:08
回答 1查看 2.6K关注 0票数 0

我是卡夫卡的新手,我正在尝试创建一个演示卡夫卡服务器并使用它。

我已经创建了动物园管理员和卡夫卡容器使用一个码头-合成文件,他们是启动和运行良好。

如果我将docker exec放入Kafka容器并运行:

kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic

主题已成功创建..。但是我想把Kafka broker旋转起来,然后以编程的方式创建主题,而不需要用户交互(最终将用于管道)。

我试过两种不同的卡夫卡图像(另一种是合流/cp).我还尝试在kafka-1命令下将bash更改为sh

真的可以在这里得到帮助。下面是我的坞-撰写文件和在我的终端中获得的错误响应,用于处理bitnami图像和合流图像。

错误(BITNAMI)

/opt/bitnami/scripts/kafka/entrypoint.sh: line 27: exec: bash -c "kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic": not found

错误(汇流)

Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "bash -c \"kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic\"": executable file not found in $PATH: unknown

DOCKER-COMPOSE.YAML

代码语言:javascript
复制
services:
  zookeeper-1:
    container_name: zookeeper-1
    image: zookeeper
    restart: always
    ports:
      - 2181:2181
    environment:
      - ZOOKEEPER_CLIENT_PORT=2181
    volumes: 
    - ./config/zookeeper-1/zookeeper.properties:/kafka/config/zookeeper.properties
  kafka-1:
    container_name: kafka-1 
    image: bitnami/kafka
    depends_on: 
      - zookeeper-1
    ports: 
      - 29092:29092
      - 9092:9092
    environment:
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper-1:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092
      - ALLOW_PLAINTEXT_LISTENER=yes
    command:
      - bash -c "kafka-topics --create --zookeeper zookeeper-1 --replication-factor 1 --partitions 1 --topic demo-topic" 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 18:15:16

对于这两个错误,您提供的命令都被附加到容器的入口点,这些入口点不接受bash命令.您需要覆盖入口点和命令,并给出kafka-topics脚本的完整路径,因为它不在$PATH上。

但是,不能在与代理相同的容器上使用command来实现这一点,因为这会覆盖实际启动服务器的命令。

您将需要一个创建主题的次要"init容器“,但是使用AdminClient.createTopics调用将这个主题创建逻辑写入您自己的生产者/消费者应用程序(假设为Java)会更容易。

否则,您可以使用具有环境变量KAFKA_CREATE_TOPICSKAFKA_CREATE_TOPICS映像,也可以在容器打开后使用docker-compose exec kafka-1 "..."

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69395147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档