Kafka containers with Docker Compose
July 18, 2023Docker Compose facilitates spinning up containers for Kafka broker and Zookeeper without installing them locally. Zookeeper is used to track cluster state, membership, and leadership.
Prerequisites
- Docker Compose installed
Configuration
The following configuration spins up Kafka and Zookeeper containers with the Kafka UI tool.
The Kafka broker address is http://localhost:29092
, and Kafka UI is available at the http://localhost:8085
address.
# docker-compose.ymlversion: '3.8'services:kafka:image: confluentinc/cp-kafka:6.0.14depends_on:- zookeeperports:- '29092:29092'environment:KAFKA_BROKER_ID: 1KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka:9092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:29092KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXTKAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNALKAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1kafka-ui:image: provectuslabs/kafka-ui:latestports:- 8085:8080environment:KAFKA_CLUSTERS_0_NAME: localKAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092DYNAMIC_CONFIG_ENABLED: 'true'zookeeper:image: confluentinc/cp-zookeeper:6.0.14ports:- '22181:2181'environment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000
Run the following command to spin up the containers.
docker-compose up
Boilerplate
Here is the link to the boilerplate I use for the development.