62 lines
1.9 KiB
YAML
62 lines
1.9 KiB
YAML
|
|
services:
|
|
kafka:
|
|
image: apache/kafka:latest
|
|
container_name: kafka-broker
|
|
hostname: kafka-broker
|
|
restart: unless-stopped
|
|
ports:
|
|
- "9092:9092"
|
|
environment:
|
|
# Single-broker KRaft config (broker + controller in one process)
|
|
KAFKA_BROKER_ID: 1
|
|
KAFKA_PROCESS_ROLES: broker,controller
|
|
KAFKA_NODE_ID: 1
|
|
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-broker:29093
|
|
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,CONTROLLER:PLAINTEXT
|
|
|
|
# Listeners:
|
|
# - PLAINTEXT: for other containers in same network
|
|
# - PLAINTEXT_HOST: for host / outside
|
|
KAFKA_LISTENERS: PLAINTEXT://kafka-broker:29092,CONTROLLER://kafka-broker:29093,PLAINTEXT_HOST://0.0.0.0:9092
|
|
|
|
# If you connect from OUTSIDE the LXC over LAN,
|
|
# change 'localhost' below to the LXC IP (e.g. 192.168.1.50)
|
|
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker:29092,PLAINTEXT_HOST://localhost:9092
|
|
|
|
# Single-broker-safe replication settings
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
|
|
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
|
|
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
|
|
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
|
|
|
|
# Logs (inside container)
|
|
KAFKA_LOG_DIRS: /tmp/kraft-combined-logs
|
|
|
|
# Any fixed cluster id string is fine for local dev;
|
|
# this is the same example used in Confluent's tutorial.
|
|
CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
|
|
|
|
networks:
|
|
- kafka-network
|
|
|
|
kafka-ui:
|
|
image: provectuslabs/kafka-ui:latest
|
|
container_name: kafka-ui
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- kafka
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
KAFKA_CLUSTERS_0_NAME: "local"
|
|
# Inside Docker network Kafka listens on 29092
|
|
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: "kafka-broker:29092"
|
|
networks:
|
|
- kafka-network
|
|
|
|
networks:
|
|
kafka-network:
|
|
driver: bridge
|