Deploying Kafka with Docker Compose and Bitnami Images

Create an isolated Docker network for the stack:

docker network create --driver bridge kafkaNet

ZooKeeper container

docker run -d \
  --name zk \
  --network kafkaNet \
  -p 2181:2181 \
  -e ALLOW_ANONYMOUS_LOGIN=yes \
  bitnami/zookeeper:latest

Kafka broker

Replace HOST_IP with the address Docker will advertise to cleints outside the bridge network.

docker run -d \
  --name broker \
  --network kafkaNet \
  -p 9092:9092 \
  -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk:2181 \
  -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://HOST_IP:9092 \
  -e ALLOW_PLAINTEXT_LISTENER=yes \
  bitnami/kafka:latest

Optoinal web UI

docker run -d \
  --name ui \
  --network kafkaNet \
  -p 9001:8080 \
  -v /opt/kafka-ui:/data \
  -e DEFAULT_USERNAME=admin \
  -e DEFAULT_PASSWORD=admin \
  --restart unless-stopped \
  dushixiang/kafka-map:latest

Smoke test

Create a topic:

docker exec broker \
  kafka-topics.sh --create \
  --topic demo \
  --bootstrap-server broker:9092 \
  --partitions 1 --replication-factor 1

Producer:

docker exec -it broker \
  kafka-console-producer.sh \
  --broker-list broker:9092 \
  --topic demo

Consumer:

docker exec -it broker \
  kafka-console-consumer.sh \
  --bootstrap-server broker:9092 \
  --topic demo \
  --from-beginning

Spring Boot snippet

spring:
  application:
    name: kafka-demo
  kafka:
    bootstrap-servers: HOST_IP:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      batch-size: 65536
      buffer-memory: 524288
    consumer:
      group-id: demo-group
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      max-poll-records: 100

Tags: docker Kafka bitnami spring-boot ZooKeeper

Posted on Fri, 11 Sep 2026 16:16:46 +0000 by suge