lycheng
3/18/2020 - 8:06 AM

Kafka docker-compose.yml

version: '3'

services:
  zk1:
    image: confluentinc/cp-zookeeper
    hostname: zk1
    container_name: zk1
    networks:
      - n1
    ports:
      - "2181:2181"
    environment:
        ZOOKEEPER_SERVER_ID: 1
        ZOOKEEPER_CLIENT_PORT: 2181
        ZOOKEEPER_SERVERS: zk1:2888:3888;zk2:2888:3888;zk3:2888:3888

  zk2:
    image: confluentinc/cp-zookeeper
    hostname: zk2
    container_name: zk2
    networks:
      - n1
    ports:
      - "2182:2181"
    environment:
        ZOOKEEPER_SERVER_ID: 2
        ZOOKEEPER_CLIENT_PORT: 2181
        ZOOKEEPER_SERVERS: zk1:2888:3888;zk2:2888:3888;zk3:2888:3888
    depends_on:
      - zk1

  zk3:
    image: confluentinc/cp-zookeeper
    hostname: zk3
    container_name: zk3
    networks:
      - n1
    ports:
      - "2183:2181"
    environment:
        ZOOKEEPER_SERVER_ID: 3
        ZOOKEEPER_CLIENT_PORT: 2181
        ZOOKEEPER_SERVERS: zk1:2888:3888;zk2:2888:3888;zk3:2888:3888
    depends_on:
      - zk1
      - zk2

  kafka1:
    image: confluentinc/cp-server
    hostname: kafka1
    container_name: kafka1
    networks:
      - n1
    ports:
      - "9091:9091"
      - "8091:8091"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka1:19091,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9091
      KAFKA_REPLICA_SELECTOR_CLASS: org.apache.kafka.common.replica.RackAwareReplicaSelector
      KAFKA_ZOOKEEPER_CONNECT: 'zk1:2181,zk2:2182,zk3:2183'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_JMX_PORT: 8091
    depends_on:
      - zk1
      - zk2
      - zk3

  kafka2:
    image: confluentinc/cp-server
    hostname: kafka2
    container_name: kafka2
    networks:
      - n1
    ports:
      - "9092:9092"
      - "8092:8092"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka2:19092,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
      KAFKA_REPLICA_SELECTOR_CLASS: org.apache.kafka.common.replica.RackAwareReplicaSelector
      KAFKA_ZOOKEEPER_CONNECT: 'zk1:2181,zk2:2182,zk3:2183'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_JMX_PORT: 8092
    depends_on:
      - zk1
      - zk2
      - zk3
      - kafka1

  kafka3:
    image: confluentinc/cp-server
    hostname: kafka3
    container_name: kafka3
    networks:
      - n1
    ports:
      - "9093:9093"
      - "8093:8093"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
      KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka3:19093,LISTENER_DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9093
      KAFKA_REPLICA_SELECTOR_CLASS: org.apache.kafka.common.replica.RackAwareReplicaSelector
      KAFKA_ZOOKEEPER_CONNECT: 'zk1:2181,zk2:2182,zk3:2183'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_JMX_PORT: 8093
    depends_on:
      - zk1
      - zk2
      - zk3
      - kafka1
      - kafka2

networks:
  n1: