version: "3.8"
services:
kafka:
image: apache/kafka:3.7.2
hostname: kafka
mem_limit: 2G
user: "1000:1000"
cpus: 1.0
ports:
- "9092:9092"
- "9093:9093"
environment:
CLUSTER_ID: "trading"
KAFKA_BROKER_ID: 1
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
KAFKA_LISTENERS: "EXTERNAL://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093,INTERNAL://kafka:29092"
KAFKA_ADVERTISED_LISTENERS: "EXTERNAL://localhost:9092,INTERNAL://kafka:29092"
KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_NUM_PARTITIONS: 1
KAFKA_DEFAULT_REPLICATION_FACTOR: 1
KAFKA_LOG_DIRS: "/var/lib/kafka/data"
KAFKA_LOG_DIR: "/var/lib/kafka/data"
volumes:
- type: bind
source: ${HOME}/docker/kafka/data
target: /var/lib/kafka/data
bind:
create_host_path: true
networks:
- kafka-net
networks:
kafka-net:
name: docker-kafka-net
external: true