Quero criar e configurar tópicos do kafka na inicialização no docker-compose. Posso fazer isso com a ajuda do serviço de adições (veja init-kafka).
É possível criar tópicos kafka sem serviço adicional? Eu estava tentando usar command: kafka-topics.sh --create --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3
o serviço kafka, mas não tive sucesso
Este código está funcionando para mim:
version: "3.8"
services:
zookeeper:
image: bitnami/zookeeper:latest
ports:
- 2181:2181
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: bitnami/kafka:latest
ports:
- 9092:9092
- 9093:9093
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CLIENT://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,CLIENT://localhost:9093
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
depends_on:
- zookeeper
init-kafka:
image: bitnami/kafka:latest
command: kafka-topics.sh --create --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3
depends_on:
- kafka
ATUALIZAÇÃO: Eu estava tentando este código (adicionado KAFKA_CREATE_TOPICS), mas não ajudou
kafka:
image: bitnami/kafka:latest
ports:
- 9092:9092
- 9093:9093
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CLIENT://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,CLIENT://localhost:9093
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
- KAFKA_CREATE_TOPICS="my_tasks_topic1:5:1"
depends_on:
- zookeeper
Existem várias maneiras de fazer isso. Mas com certeza você pode criar através
environment
KAFKA_CREATE_TOPICS
Esta variável de ambiente criará tópicos do Kafka automaticamente quando o contêiner iniciar. Ela usa o formatotopic_name:partitions:replication_factor
.