kafka:
image: apache/kafka:4.0.0
container_name: kafka-4.0.0
ports:
- 9091:9091
- 9092:9092
- 9093:9093
volumes:
- ./kafka/kafka_server_jaas.conf:/etc/kafka/kafka_server_jaas.conf
- ./kafka/logs:/tmp/kafka-logs
environment:
# KRaft 核心配置
CLUSTER_ID: kafka-dev
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: controller,broker
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
# 单机配置
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
# 安全协议映射
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: BROKER:PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT
# 监听器定义
KAFKA_LISTENERS: BROKER://:9091,CLIENT://:9092,CONTROLLER://:9093
KAFKA_ADVERTISED_LISTENERS: BROKER://localhost:9091,CLIENT://host.docker.internal:9092
# 显式指定 Broker 间通信的监听器
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_INTER_BROKER_LISTENER_NAME: BROKER
# SASL 认证配置
KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
# KAFKA_SASL_MECHANISM_CONTROLLER_PROTOCOL: PLAIN
# KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
KAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf