Skip to content

Instantly share code, notes, and snippets.

@cemtopkaya
Last active January 18, 2025 23:48
Show Gist options
  • Save cemtopkaya/e58449bf186828208a11d861f553bbef to your computer and use it in GitHub Desktop.
Save cemtopkaya/e58449bf186828208a11d861f553bbef to your computer and use it in GitHub Desktop.

Docker ile Apache Kafka Kurulumu

Önce ağ yaratlım:

docker network create kafka-sebeke --driver bridge

Zookeeper sunucusunu ayaklandıracağız:

docker run -d --name zookeeper       \
       --network kafka-sebeke        \
       -e ALLOW_ANONYMOUS_LOGIN=yes  \
       bitnami/zookeeper:latest

Kafka Sunucusunu ayaklandır:

docker run -d --name kafka                                  \
       --network kafka-sebeke                               \
       -e ALLOW_PLAINTEXT_LISTENER=yes                      \
       -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
       bitnami/kafka:latest

Kafka Drop kuralım:

docker run -d --rm                        \
       -p 9000:9000                       \
       --network kafka-sebeke             \
       -e KAFKA_BROKERCONNECT=kafka:9092  \
       -e SERVER_SERVLET_CONTEXTPATH="/"  \
       obsidiandynamics/kafdrop:latest

Bu da docker-compose.yml dosyası:

version: '3'

services:
  zookeeper:
    image: bitnami/zookeeper:latest
    container_name: zookeeper
    hostname: zookeeper
    environment:
      ALLOW_ANONYMOUS_LOGIN: 'yes'
    networks:
      - kafka-sebeke

  kafka:
    image: bitnami/kafka:latest
    container_name: kafka
    hostname: kafka
    environment:
      ALLOW_PLAINTEXT_LISTENER: 'yes'
      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
    networks:
      - kafka-sebeke

  kafdrop:
    image: obsidiandynamics/kafdrop:latest
    container_name: kafdrop
    hostname: kafdrop
    ports:
      - "9000:9000"
    environment:
      KAFKA_BROKERCONNECT: kafka:9092
      SERVER_SERVLET_CONTEXTPATH: /
    networks:
      - kafka-sebeke

networks:
  kafka-sebeke:
    driver: bridge

Kümelenmiş şekilde Kafka sunucularını ayaklandıralım:

version: '3.8'

services:
  zookeeper:
    image: bitnami/zookeeper:latest
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      - ZOOKEEPER_CLIENT_PORT=2181
      - ZOOKEEPER_TICK_TIME=2000
      - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
      - kafka-network

  kafka1:
    image: bitnami/kafka:latest
    container_name: kafka1
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka1:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - kafka-network

  kafka2:
    image: bitnami/kafka:latest
    container_name: kafka2
    depends_on:
      - zookeeper
    ports:
      - "9093:9092"
    environment:
      - KAFKA_BROKER_ID=2
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka2:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - kafka-network

  kafka3:
    image: bitnami/kafka:latest
    container_name: kafka3
    depends_on:
      - zookeeper
    ports:
      - "9094:9092"
    environment:
      - KAFKA_BROKER_ID=3
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka3:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - kafka-network

  kafkadrop:
    image: obsidiandynamics/kafdrop
    container_name: kafkadrop
    ports:
      - "9000:9000"
    depends_on:
      - kafka1
      - kafka2
      - kafka3
    environment:
      - KAFKA_BROKER_CONNECT=kafka1:9092,kafka2:9093,kafka3:9094
    networks:
      - kafka-network

networks:
  kafka-network:
    name: kafka-network
    driver: bridge
container_name: kafdrop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment