35 lines
1.9 KiB
YAML
35 lines
1.9 KiB
YAML
version: "3"
|
|
|
|
services:
|
|
kafka:
|
|
image: apache/kafka:latest
|
|
container_name: kafka-python-conn
|
|
ports:
|
|
- "127.0.0.1:9092:9092" # localhost interface,host:container
|
|
environment:
|
|
# who am I in the cluster
|
|
KAFKA_NODE_ID: 1 # node identifier in cluster
|
|
KAFKA_PROCESS_ROLES: broker,controller # Combined broker + controller (KRaft mode, no Zookeeper)
|
|
# how to vote in the cluster, service name at line 4
|
|
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093 # Controller nodes for quorum (node_id@host:port)
|
|
|
|
# Listener configuration
|
|
# what interfaces and ports on the container layer ( not host )
|
|
# PLAINTEXT and CONTROLLER are listener names, can be anything as long as
|
|
# referenced the correct ones after
|
|
KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093 # Ports Kafka listens on internally
|
|
# outside container layer ( host )
|
|
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 # Address advertised to clients
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT # encryption settings for listeners
|
|
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER # listener name for controller communication
|
|
|
|
KAFKA_LOG_DIRS: /var/lib/kafka/data # Directory for message data storage
|
|
|
|
# when running locally you NEED this else consumer can't read via group
|
|
# as by default it wants 3 replicas for these internal topics and errors out
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 # replication factor for offsets topic
|
|
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 # replication factor for transaction log
|
|
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 # how many replicas must acknowledge a write
|
|
volumes:
|
|
- ./kafka-data:/var/lib/kafka/data # Persist data across container restarts
|