说明

在开发环境快速部署Apache Kafka用于开发测试。支持数据持久化,支持自动初始化数据目录。

单节点部署

创建文件compose.yaml

# 单节点,用于开发环境,无安全配置,任意来源可访问,默认不开启数据持久化。

services:
  init-kafka-perms:
    image: busybox:latest
    command: chown -R 1000:1000 /tmp/kraft-combined-logs
    volumes:
      - kafka-logs:/tmp/kraft-combined-logs
    restart: "no"
    container_name: kafka-perms-fix
    networks:
      - kafka
      
  broker:
    image: apache/kafka:4.2.0
    hostname: broker
    container_name: kafka-broker
    ports:
      - '9092:9092'
    restart: unless-stopped
    depends_on:
      init-kafka-perms:
        condition: service_completed_successfully
    networks:
      - kafka
    volumes:
      - kafka-logs:/tmp/kraft-combined-logs
      # 配置文件存放在conf目录下,挂载至容器内。
      # - ./conf:/mnt/shared/config
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      # 固定IP场景可配置监听指定的IP,使指定的IP对外提供服务,默认监听所有。
      # KAFKA_LISTENERS: '0.0.0.0'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT_HOST://localhost:9092,PLAINTEXT://broker:19092'
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@broker:29093'
      KAFKA_LISTENERS: 'CONTROLLER://:29093,PLAINTEXT_HOST://:9092,PLAINTEXT://:19092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      CLUSTER_ID: '4L6g3nShT-eMCtK--X86sw'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_SHARE_COORDINATOR_STATE_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_SHARE_COORDINATOR_STATE_TOPIC_MIN_ISR: 1
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    healthcheck:
      test: nc -z localhost 9092 || exit 1
      interval: 60s
      timeout: 5s
      retries: 2
      start_period: 30s
      
volumes:
  kafka-logs:
   name: kafka-logs

networks:
  kafka:
    name: kafka

启动容器

docker compose up -d
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐