version: '3.8' networks: kafka-cluster-network: driver: bridge services: kafka1: image: apache/kafka:latest container_name: kafka1 hostname: kafka1 networks: - kafka-cluster-network ports: - "19092:9092" volumes: - ./broker1/data:/var/lib/kafka/data - ./broker1/config:/mnt/shared/config - ./broker1/secrets:/etc/kafka/secrets - ./kafka-server-jaas.conf:/etc/kafka/kafka-server-jaas.conf environment: KAFKA_NODE_ID: 1 KAFKA_LISTENERS: PLAINTEXT://kafka1:9092,CONTROLLER://kafka1:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.8:19092 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_PROCESS_ROLES: broker,controller KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka1:9093,2@kafka2:9093,3@kafka3:9093 KAFKA_CLUSTER_ID: my-kafka-cluster KAFKA_LOG_DIRS: /var/lib/kafka/data KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT KAFKA_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN KAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/kafka-server-jaas.conf kafka2: image: apache/kafka:latest container_name: kafka2 hostname: kafka2 networks: - kafka-cluster-network ports: - "19093:9092" volumes: - ./broker2/data:/var/lib/kafka/data - ./broker2/config:/mnt/shared/config - ./broker2/secrets:/etc/kafka/secrets - ./kafka-server-jaas.conf:/etc/kafka/kafka-server-jaas.conf environment: KAFKA_NODE_ID: 2 KAFKA_LISTENERS: PLAINTEXT://kafka2:9092,CONTROLLER://kafka2:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.8:19093 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_PROCESS_ROLES: broker,controller KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka1:9093,2@kafka2:9093,3@kafka3:9093 KAFKA_CLUSTER_ID: my-kafka-cluster KAFKA_LOG_DIRS: /var/lib/kafka/data KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT KAFKA_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN KAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/kafka-server-jaas.conf kafka3: image: apache/kafka:latest container_name: kafka3 hostname: kafka3 networks: - kafka-cluster-network ports: - "19094:9092" volumes: - ./broker3/data:/var/lib/kafka/data - ./broker3/config:/mnt/shared/config - ./broker3/secrets:/etc/kafka/secrets - ./kafka-server-jaas.conf:/etc/kafka/kafka-server-jaas.conf environment: KAFKA_NODE_ID: 3 KAFKA_LISTENERS: PLAINTEXT://kafka3:9092,CONTROLLER://kafka3:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.8:19094 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_PROCESS_ROLES: broker,controller KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka1:9093,2@kafka2:9093,3@kafka3:9093 KAFKA_CLUSTER_ID: my-kafka-cluster KAFKA_LOG_DIRS: /var/lib/kafka/data KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT KAFKA_SASL_ENABLED_MECHANISMS: PLAIN KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN KAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/kafka-server-jaas.conf kafka-console-ui: image: wdkang/kafka-console-ui container_name: kafka-console-ui networks: - kafka-cluster-network ports: - "7766:7766" volumes: - ./console-ui/data:/app/data - ./console-ui/log:/app/log privileged: true user: root