diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..45f0936 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,73 @@ +# https://blog.exxeta.com/en/2021/05/20/kafka-cluster-setup-with-docker-and-docker-compose/ + +version: "3" + +networks: + kafka-cluster: + name: kafka-cluster + driver: bridge + +services: + zookeeper: + image: bitnami/zookeeper:3.7.0 + container_name: zookeeper + ports: + - '2181:2181' + environment: + - ALLOW_ANONYMOUS_LOGIN=yes + networks: + - kafka-cluster + + kafka1: + image: bitnami/kafka:3.1.0 + container_name: kafka1 + ports: + - '9093:9093' + environment: + - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 + - ALLOW_PLAINTEXT_LISTENER=yes + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT + - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093 + - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka1:9092,EXTERNAL://localhost:9093 + - KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT + - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true + depends_on: + - zookeeper + networks: + - kafka-cluster + + kafka2: + image: bitnami/kafka:3.1.0 + container_name: kafka2 + ports: + - '9094:9094' + environment: + - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 + - ALLOW_PLAINTEXT_LISTENER=yes + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT + - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9094 + - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka2:9092,EXTERNAL://localhost:9094 + - KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT + - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true + depends_on: + - zookeeper + networks: + - kafka-cluster + + kafka3: + image: bitnami/kafka:3.1.0 + container_name: kafka3 + ports: + - '9095:9095' + environment: + - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 + - ALLOW_PLAINTEXT_LISTENER=yes + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT + - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9095 + - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka3:9092,EXTERNAL://localhost:9095 + - KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT + - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true + depends_on: + - zookeeper + networks: + - kafka-cluster