services: controller: image: apache/kafka:latest container_name: controller environment: KAFKA_NODE_ID: 0 KAFKA_PROCESS_ROLES: controller KAFKA_LISTENERS: CONTROLLER://:9093 KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 broker-1: image: apache/kafka:latest container_name: broker-1 privileged: true ports: - "29092:9092" - "29093:9093" - "7071:7071" environment: KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker KAFKA_LISTENERS: PLAINTEXT://:19092,PLAINTEXT_HOST://:9092,SSL://:19093,SSL_HOST://:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-1:19092,PLAINTEXT_HOST://localhost:29092,SSL://broker-1:19093,SSL_HOST://localhost:29093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,SSL:SSL,SSL_HOST:SSL KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.broker.truststore.jks KAFKA_SSL_TRUSTSTORE_CREDENTIALS: password KAFKA_SSL_KEYSTORE_FILENAME: kafka.broker.keystore.jks KAFKA_SSL_KEYSTORE_CREDENTIALS: password KAFKA_SSL_KEY_CREDENTIALS: password KAFKA_NUM_PARTITIONS: 3 KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 5 KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_OPTS: -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar=7071:/opt/jmx_exporter/server-metrics.yml depends_on: - controller volumes: - ./jmx/server-metrics.yml:/opt/jmx_exporter/server-metrics.yml - ./jmx/jmx_prometheus_javaagent-0.3.1.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar - ../ssl:/etc/kafka/secrets broker-2: image: apache/kafka:latest container_name: broker-2 privileged: true ports: - "39092:9092" - "39093:9093" - "7072:7071" environment: KAFKA_NODE_ID: 2 KAFKA_PROCESS_ROLES: broker KAFKA_LISTENERS: PLAINTEXT://:19092,PLAINTEXT_HOST://:9092,SSL://:19093,SSL_HOST://:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-2:19092,PLAINTEXT_HOST://localhost:39092,SSL://broker-2:19093,SSL_HOST://localhost:39093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,SSL:SSL,SSL_HOST:SSL KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.broker.truststore.jks KAFKA_SSL_TRUSTSTORE_CREDENTIALS: password KAFKA_SSL_KEYSTORE_FILENAME: kafka.broker.keystore.jks KAFKA_SSL_KEYSTORE_CREDENTIALS: password KAFKA_SSL_KEY_CREDENTIALS: password KAFKA_NUM_PARTITIONS: 3 KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 5 KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_OPTS: -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar=7071:/opt/jmx_exporter/server-metrics.yml depends_on: - controller volumes: - ./jmx/server-metrics.yml:/opt/jmx_exporter/server-metrics.yml - ./jmx/jmx_prometheus_javaagent-0.3.1.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar - ../ssl:/etc/kafka/secrets broker-3: image: apache/kafka:latest container_name: broker-3 privileged: true ports: - "49092:9092" - "49093:9093" - "7073:7071" environment: KAFKA_NODE_ID: 3 KAFKA_PROCESS_ROLES: broker KAFKA_LISTENERS: PLAINTEXT://:19092,PLAINTEXT_HOST://:9092,SSL://:19093,SSL_HOST://:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-3:19092,PLAINTEXT_HOST://localhost:49092,SSL://broker-3:19093,SSL_HOST://localhost:49093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,SSL:SSL,SSL_HOST:SSL KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.broker.truststore.jks KAFKA_SSL_TRUSTSTORE_CREDENTIALS: password KAFKA_SSL_KEYSTORE_FILENAME: kafka.broker.keystore.jks KAFKA_SSL_KEYSTORE_CREDENTIALS: password KAFKA_SSL_KEY_CREDENTIALS: password KAFKA_NUM_PARTITIONS: 3 KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 5 KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_OPTS: -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar=7071:/opt/jmx_exporter/server-metrics.yml depends_on: - controller volumes: - ./jmx/server-metrics.yml:/opt/jmx_exporter/server-metrics.yml - ./jmx/jmx_prometheus_javaagent-0.3.1.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar - ../ssl:/etc/kafka/secrets