簡體   English   中英

Kafka docker compose 配置只創建一個分區

[英]Kafka docker compose configuration only creates one partition

我正在使用 docker-compose 通過以下方式設置 kafka 代理:

  kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - 29092:29092
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      command: sh -c "(sleep 15) && (kafka-topics --create --partitions 3 --bootstrap-server kafka:9092 --topic input) && (kafka-topics --create --bootstrap-server kafka:9092 --partitions 1 --topic output)"

問題是應該創建具有 3 個分區的“輸入”主題的命令只創建了一個分區,我不明白為什么。 當我 go 在容器內刪除主題並再次創建時,使用相同的命令,主題然后正確設置。

我曾多次嘗試重建圖像並清除緩存,但每次我都只得到一個分區。 我究竟做錯了什么?

為什么不從 Kafka 容器中分離出 init 腳本並創建一個 init-kafka-container 來設置所有必需的主題和其他配置?

  kafka:
    image: confluentinc/cp-kafka:latest
    hostname: kafka
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - 29092:29092
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  init-kafka-container:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - kafka
    entrypoint: [ '/bin/sh', '-c' ]
    command: |
      "
      # rather than giving sleep 15 use this 
      # to block init container to wait for Kafka broker to be ready  
      kafka-topics --bootstrap-server kafka:9092 --list

      # create init topics
      kafka-topics --create --partitions 3 --bootstrap-server kafka:9092 --topic input
      kafka-topics --create --bootstrap-server kafka:9092 --partitions 1 --topic output
      "

command不是有效的環境變量。

它需要不縮進,但隨后您將覆蓋 Confluent 容器默認命令,並且容器和 Kafka 代理根本不會啟動,並且不會創建任何主題。


它使用一個分區創建主題,因為這是為自動創建的代理設置的默認配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM