Skip to content

Instantly share code, notes, and snippets.

@pranid
Created November 6, 2025 09:23
Show Gist options
  • Select an option

  • Save pranid/058e82eca9a87cec49927a6aa812f093 to your computer and use it in GitHub Desktop.

Select an option

Save pranid/058e82eca9a87cec49927a6aa812f093 to your computer and use it in GitHub Desktop.
Apache Kafka and provectuslabs kafka-ui Docker Compose
services:
broker:
image: apache/kafka:latest
container_name: broker
ports:
- "9092:9092"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
# Two listeners: INTERNAL for Docker network, EXTERNAL for host
KAFKA_LISTENERS: INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
# Advertise INTERNAL as 'broker', EXTERNAL as 'localhost'
KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker:19092,EXTERNAL://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
# Brokers communicate using INTERNAL listener
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@broker:9093
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
KAFKA_NUM_PARTITIONS: 3
healthcheck:
test: ["CMD", "kafka-topics.sh", "--bootstrap-server", "localhost:9092", "--list"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./kafka_data:/var/lib/kafka/data
networks:
- kafka-network
kafka-ui:
image: provectuslabs/kafka-ui:latest
container_name: kafka-ui
ports:
- "8081:8080"
environment:
KAFKA_CLUSTERS_0_NAME: local
# Connect using INTERNAL listener
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: broker:19092
depends_on:
broker:
condition: service_healthy
restart: always
networks:
- kafka-network
networks:
kafka-network:
driver: bridge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment