From fd3244b81587632eb84212c23ebdfcfd7d4358ac Mon Sep 17 00:00:00 2001 From: nkozobrod Date: Thu, 6 Aug 2026 16:12:23 +0300 Subject: [PATCH] Kafka KRaft single node + kafka-ui (kf.kzbrd.ru) --- .gitignore | 4 +++ docker-compose.yml | 69 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 .gitignore create mode 100644 docker-compose.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..474fc89 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.env +*.log +.DS_Store +Thumbs.db diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..897297e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,69 @@ +name: kafka + +services: + kafka: + image: apache/kafka:4.3.1 + container_name: kafka + restart: unless-stopped + ports: + - "9092:9092" + environment: + KAFKA_NODE_ID: "1" + KAFKA_PROCESS_ROLES: "broker,controller" + KAFKA_LISTENERS: "PLAINTEXT://:9092,CONTROLLER://:9093" + KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://192.168.1.80:9092" + KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER" + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT" + KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093" + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1" + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: "1" + KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: "1" + KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" + KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: "0" + CLUSTER_ID: "Awl73adfROK843jZYf-owQ" + KAFKA_HEAP_OPTS: "-Xmx2G -Xms1G" + volumes: + - kafka-data:/var/lib/kafka/data + healthcheck: + test: ["CMD-SHELL", "/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list >/dev/null 2>&1"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 60s + networks: + - default + + kafka-ui: + image: kafbat/kafka-ui:latest + container_name: kafka-ui + restart: unless-stopped + environment: + KAFKA_CLUSTERS_0_NAME: "homelab" + KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: "kafka:9092" + SERVER_PORT: "8080" + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik_proxy" + - "traefik.http.routers.kafka-ui.rule=Host(`kf.kzbrd.ru`)" + - "traefik.http.routers.kafka-ui.entrypoints=websecure" + - "traefik.http.routers.kafka-ui.tls=true" + - "traefik.http.routers.kafka-ui.tls.certresolver=myresolver" + - "traefik.http.services.kafka-ui.loadbalancer.server.port=8080" + healthcheck: + test: ["CMD-SHELL", "curl -sf http://localhost:8080/actuator/health >/dev/null 2>&1 || wget -q -O /dev/null http://localhost:8080/actuator/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 45s + depends_on: + - kafka + networks: + - default + - traefik_proxy + +volumes: + kafka-data: + +networks: + traefik_proxy: + external: true