services: kafka: image: apache/kafka:latest container_name: kafka ports: - "9092:9092" environment: # KRaft configuration (bez ZooKeeper) KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker,controller KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093 # Listeners configuration KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:29092,CONTROLLER://0.0.0.0:9093,EXTERNAL://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,EXTERNAL://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT # Storage KAFKA_LOG_DIRS: /var/lib/kafka/data # Development settings KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 # Cluster ID (dla KRaft) CLUSTER_ID: "5L6g3nShT-eMCtK--X86sw" healthcheck: test: ["CMD-SHELL", "kafka-broker-api-versions.sh --bootstrap-server localhost:29092"] interval: 30s timeout: 10s retries: 3 start_period: 60s kafka-ui: image: provectuslabs/kafka-ui:latest container_name: kafka-ui depends_on: kafka: condition: service_healthy ports: - "8080:8080" environment: KAFKA_CLUSTERS_0_NAME: local KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 KAFKA_CLUSTERS_0_READONLY: "false"