Skip to content

Instantly share code, notes, and snippets.

@rafa-thayto
Created February 20, 2024 20:24
Show Gist options
  • Select an option

  • Save rafa-thayto/a866be95ee711c2130cf0d8194a97848 to your computer and use it in GitHub Desktop.

Select an option

Save rafa-thayto/a866be95ee711c2130cf0d8194a97848 to your computer and use it in GitHub Desktop.
Docker Compose file example with zookeper + 3 kafka brokers + schema registry + custom network
version: "3.7"
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
platform: linux/arm64
ports:
- 8080:8080
depends_on:
- kafka-broker-1
- kafka-broker-2
- kafka-broker-3
- schema-registry
- zookeeper
environment:
# AUTH_TYPE: "LOGIN_FORM"
# SPRING_SECURITY_USER_NAME: admin
# SPRING_SECURITY_USER_PASSWORD: pass
# KAFKA_CLUSTERS_1_NAME: local-first
# KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS: kafka-broker-1:19092
# KAFKA_CLUSTERS_1_SCHEMAREGISTRY: http://schema-registry:8081
# KAFKA_CLUSTERS_1_ZOOKEEPER: zookeeper:2181
#
# KAFKA_CLUSTERS_2_NAME: local-second
# KAFKA_CLUSTERS_2_BOOTSTRAPSERVERS: kafka-broker-2:29092
# KAFKA_CLUSTERS_2_SCHEMAREGISTRY: http://schema-registry:8081
# KAFKA_CLUSTERS_2_ZOOKEEPER: zookeeper:2181
#
# KAFKA_CLUSTERS_3_NAME: local-third
# KAFKA_CLUSTERS_3_BOOTSTRAPSERVERS: kafka-broker-3:39092
# KAFKA_CLUSTERS_3_SCHEMAREGISTRY: http://schema-registry:8081
# KAFKA_CLUSTERS_3_ZOOKEEPER: zookeeper:2181
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-broker-1:19092,kafka-broker-2:29092,kafka-broker-3:39092
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry:8081
KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
# KAFKA_CLUSTERS_0_METRICS_PORT: 9997
DYNAMIC_CONFIG_ENABLED: "true" # not necessary, added for tests
# KAFKA_CLUSTERS_0_AUDIT_TOPICAUDITENABLED: "true"
# KAFKA_CLUSTERS_0_AUDIT_CONSOLEAUDITENABLED: "true"
zookeeper:
image: confluentinc/cp-zookeeper:latest
platform: linux/arm64
container_name: zookeeper
networks:
- local-kafka-net
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "2181:2181"
schema-registry:
image: confluentinc/cp-schema-registry:latest
platform: linux/arm64
hostname: schema-registry
networks:
- local-kafka-net
depends_on:
- kafka-broker-1
- kafka-broker-2
- kafka-broker-3
ports:
- "8081:8081"
environment:
SCHEMA_REGISTRY_HOST_NAME: schema-registry
SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: "zookeeper:2181"
SCHEMA_REGISTRY_LISTENERS: http://schema-registry:8081
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka-broker-2:9092,PLAINTEXT_INTERNAL://localhost:29092
SCHEMA_REGISTRY_DEBUG: "true"
# Kafka Brokers
kafka-broker-1:
image: confluentinc/cp-kafka:latest
platform: linux/arm64
hostname: kafka-broker-1
networks:
- local-kafka-net
ports:
- "19092:19092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker-1:9092,PLAINTEXT_INTERNAL://localhost:19092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
kafka-broker-2:
image: confluentinc/cp-kafka:latest
platform: linux/arm64
hostname: kafka-broker-2
networks:
- local-kafka-net
ports:
- "29092:29092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker-2:9092,PLAINTEXT_INTERNAL://localhost:29092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
kafka-broker-3:
image: confluentinc/cp-kafka:latest
platform: linux/arm64
hostname: kafka-broker-3
networks:
- local-kafka-net
ports:
- "39092:39092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 3
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker-3:9092,PLAINTEXT_INTERNAL://localhost:39092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
networks:
local-kafka-net:
name: local-kafka-net
ipam:
config:
- subnet: 172.176.0.0/16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment