docker-compose.yml

  1. version: '3.3'
  2. services:
  3. zookeeper:
  4. image: confluentinc/cp-zookeeper:${CONFLUENT_PLATFORM_VERSION:-5.2.2}
  5. ports:
  6. - "2181:2181"
  7. - "2888:2888"
  8. - "3888:3888"
  9. healthcheck:
  10. test: echo stat | nc localhost 2181
  11. interval: 10s
  12. timeout: 10s
  13. retries: 3
  14. environment:
  15. - ZOOKEEPER_SERVER_ID=1
  16. - ZOOKEEPER_CLIENT_PORT=2181
  17. - ZOOKEEPER_TICK_TIME=2000
  18. - ZOOKEEPER_INIT_LIMIT=5
  19. - ZOOKEEPER_SYNC_LIMIT=2
  20. - ZOOKEEPER_SERVERS=zookeeper:2888:3888
  21. kafka1:
  22. image: confluentinc/cp-kafka:${CONFLUENT_PLATFORM_VERSION:-5.2.2}
  23. healthcheck:
  24. test: ps augwwx | egrep [S]upportedKafka
  25. depends_on:
  26. - zookeeper
  27. ports:
  28. - "9091:9091"
  29. environment:
  30. - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka1:9091
  31. - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9091
  32. - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
  33. - KAFKA_BROKER_ID=1
  34. - BOOTSTRAP_SERVERS=kafka1:9091,kafka2:9092,kafka3:9093,kafka4:9094,kafka5:9095
  35. - ZOOKEEPER=zookeeper:2181
  36. kafka2:
  37. image: confluentinc/cp-kafka:${CONFLUENT_PLATFORM_VERSION:-5.2.2}
  38. healthcheck:
  39. test: ps augwwx | egrep [S]upportedKafka
  40. depends_on:
  41. - zookeeper
  42. ports:
  43. - "9092:9092"
  44. environment:
  45. - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka2:9092
  46. - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
  47. - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
  48. - KAFKA_BROKER_ID=2
  49. - BOOTSTRAP_SERVERS=kafka1:9091,kafka2:9092,kafka3:9093,kafka4:9094,kafka5:9095
  50. - ZOOKEEPER=zookeeper:2181
  51. kafka3:
  52. image: confluentinc/cp-kafka:${CONFLUENT_PLATFORM_VERSION:-5.2.2}
  53. healthcheck:
  54. test: ps augwwx | egrep [S]upportedKafka
  55. depends_on:
  56. - zookeeper
  57. ports:
  58. - "9093:9093"
  59. environment:
  60. - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka3:9093
  61. - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093
  62. - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
  63. - KAFKA_BROKER_ID=3
  64. - BOOTSTRAP_SERVERS=kafka1:9091,kafka2:9092,kafka3:9093,kafka4:9094,kafka5:9095
  65. - ZOOKEEPER=zookeeper:2181
  66. kafka4:
  67. image: confluentinc/cp-kafka:${CONFLUENT_PLATFORM_VERSION:-5.2.2}
  68. healthcheck:
  69. test: ps augwwx | egrep [S]upportedKafka
  70. depends_on:
  71. - zookeeper
  72. ports:
  73. - "9094:9094"
  74. environment:
  75. - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka4:9094
  76. - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094
  77. - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
  78. - KAFKA_BROKER_ID=4
  79. - BOOTSTRAP_SERVERS=kafka1:9091,kafka2:9092,kafka3:9093,kafka4:9094,kafka5:9095
  80. - ZOOKEEPER=zookeeper:2181
  81. kafka5:
  82. image: confluentinc/cp-kafka:${CONFLUENT_PLATFORM_VERSION:-5.2.2}
  83. healthcheck:
  84. test: ps augwwx | egrep [S]upportedKafka
  85. depends_on:
  86. - zookeeper
  87. ports:
  88. - "9095:9095"
  89. environment:
  90. - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka5:9095
  91. - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9095
  92. - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
  93. - KAFKA_BROKER_ID=5
  94. - BOOTSTRAP_SERVERS=kafka1:9091,kafka2:9092,kafka3:9093,kafka4:9094,kafka5:9095
  95. - ZOOKEEPER=zookeeper:2181
  96. brokermanager:
  97. image: kafkamanager/kafka-manager
  98. restart: always
  99. hostname: brokermanager
  100. container_name: brokermanager
  101. ports:
  102. - "9000:9000"
  103. depends_on:
  104. - zookeeper
  105. environment:
  106. ZK_HOSTS: zookeeper:2181

kafa 单机

dockerhub地址:https://hub.docker.com/r/bitnami/kafka

安装docker-compose 组件

sudo wget "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose 

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

zk-kafka 配置文件

默认是kafka最新版本,若是使用低版本的kafka,直接拷贝下面的 zk-kafka-docker-compose-2.8.1.yml
wget https://raw.githubusercontent.com/bitnami/bitnami-docker-kafka/master/docker-compose.yml -O zk-kafka-docker-compose.yml

zk-kafka-docker-compose-2.8.1.yml 配置文件

version: "2"

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.7
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:2.8.1
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local

服务命令

启动服务
docker-compose -f zk-kafka-docker-compose.yml up -d

停止服务
docker-compose -f zk-kafka-docker-compose.yml stop

停止并删除服务
docker-compose -f docker-compose.yml down

查看控制台

提供两种ui界面

docker run -d --name kafka-manager -p 9000:9000 -e ZK_HOSTS=192.168.88.100:2181 -e KAFKA_BROKERS=192.168.88.100:9092 sheepkiller/kafka-manager

docker run -d -p 9000:9000 -e ZK_HOSTS=192.168.88.100:2181 solsson/kafka-manager