dockerkafkalinux

Tutorial Docker Compose Kafka dengan UI Manager (Redpanda Console)

author

Ahmad Lukman Hakim

02 November 2024

Kali ini saya akan berbagi sedikit tutorial Docker Compose Kafka dengan UI Manager (Redpanda Console). Semoga membantu teman-teman yang ingin melakukan setup kafka secara mudah dan cepat untuk server development.

Langkah-langkah Setup Kafka Broker + UI Manager (Redpanda Console) dengan Docker Compose

1. Buat folder untuk menyimpan file yang berhubungan dengan kafka

mkdir kafka/
cd kafka/

2. Buat file Docker Compose

vi docker-compose.yaml
services:
  zoo1:
    image: confluentinc/cp-zookeeper:7.3.2
    hostname: zoo1
    container_name: zoo1
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_SERVERS: zoo1:2888:3888

  kafka1:
    image: confluentinc/cp-kafka:7.3.2
    hostname: kafka1
    container_name: kafka1
    ports:
      - "9092:9092"
      - "29092:29092"
      - "9999:9999"
    environment:
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://172.18.0.1:9092,DOCKER://host.docker.internal:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT,EXTERNAL_PUBLIC:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_JMX_PORT: 9999
      KAFKA_JMX_HOSTNAME: ${DOCKER_HOST_IP:-127.0.0.1}
      KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
      KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
    depends_on:
      - zoo1

  console:
    image: docker.redpanda.com/redpandadata/console:v2.7.2
    entrypoint: /bin/sh
    command: -c "echo \"$$CONSOLE_CONFIG_FILE\" > /tmp/config.yml; /app/console"
    environment:
      CONFIG_FILEPATH: /tmp/config.yml
      CONSOLE_CONFIG_FILE: |
        kafka:
          brokers: ["172.18.0.1:9092"]
    ports:
      - "8080:8080"

Note:

Ganti address pada bagian berikut: EXTERNAL://172.18.0.1:9092 dan brokers: ["172.18.0.1:9092"]

Simpan

3. Jalankan Docker Compose

docker-compose up -d

Verifikasi

Tips:

  • Amankan port web-ui, kafka-broker, zookeeper dari publik. Izinkan hanya IP Address tertentu.