【问题标题】:How create kafka cluster and topics in docker-compose.yml如何在 docker-compose.yml 中创建 kafka 集群和主题
【发布时间】:2021-02-05 23:02:21
【问题描述】:

我是 docker 新手。我想将 kafka 容器化并添加一个集群,比如 MyCluster,然后在 kafka 服务器启动后立即向集群添加 4 个主题,例如 topic_a、topic_b、topic_c 和 topic_d。有人可以向我解释如何做到这一点吗?我尝试了以下 docker-compose.yml 并且能够启动容器化的 kafka 服务器和 kafka 管理器,但我无法以编程方式创建集群/主题。请帮忙!

version: "2"

services:
  kafkaserver:
    image: "spotify/kafka:latest"
    container_name: kafka
    hostname: kafkaserver
    networks:
      - kafkanet
    ports:
      - 2181:2181
      - 9092:9092
    environment:
      ADVERTISED_HOST: kafkaserver
      ADVERTISED_PORT: 9092
    command:
      /opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_a
      /opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_b
      /opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_c
      /opt/kafka_2.11-0.10.1.0/bin/kafka-topics.sh --create --zookeeper kafkaserver:2181 --replication-factor 1 --partitions 1 --topic topic_d

  kafka_manager:
    image: "mzagar/kafka-manager-docker:1.3.3.4"
    container_name: kafkamanager
    networks:
      - kafkanet
    ports:
      - 9000:9000
    links:
      - kafkaserver
    environment:
      ZK_HOSTS: "kafkaserver:2181"

networks:
  kafkanet:
    driver: bridge

【问题讨论】:

  • 那个 spotify 图像已经多年没有维护了。可能不想用它

标签: docker apache-kafka docker-compose


【解决方案1】:

我在我的 docker-compose 文件中使用了这个配置。整个文件可以在这里找到https://github.com/felipegutierrez/explore-flink/blob/master/operations-playground/docker-compose.yaml

  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    restart: always
  kafka:
    image: wurstmeister/kafka:2.12-2.2.1
    environment:
      KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
      KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_CREATE_TOPICS: "input:2:1, output:2:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    ports:
      - 9094:9094
    restart: always

【讨论】:

  • 您好 Felipe,非常感谢您的回复。在我修改我的 docker-compose.yml 以使用 KAFKA_CREATE_TOPICS: "topic_a:1:1, topic_b:1:1, topic_c:1:1, topic_d:1:1" 之后,它就像一个魅力。
  • 很好 ;) 我很高兴它成功了。请记住,让 Kafka 在 Docker 或 Kubernetes 中开箱即用是非常困难的。这就是为什么有许多其他项目为我们实施它的原因。像 Strimzi、Confluent、wurstmeister 等......使用它们。请考虑检查我的答案是否已接受:)
猜你喜欢
  • 1970-01-01
  • 2021-02-28
  • 2017-01-19
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2022-10-18
  • 2021-09-11
相关资源
最近更新 更多