【Docker基础六】docker-compose安装zookeeper、kafka、kafdrop

本文使用 Bitnami/Kafka 提供的kafka容器镜像。详情参考:bitnami/kafka - Docker 镜像 |Docker 中心

创建Docker Compose文件

创建一个名为 docker-compose.yml 的文件,并复制以下内容

javascript 复制代码
version: "3.8"
services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.9
    container_name: zookeeper
    restart: always
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/usr/local/software/data/zookeeper"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
      - m-kafka-network

  kafka:
    image: docker.io/bitnami/kafka:3.4
    container_name: kafka
    restart: always
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/usr/local/software/data/kafka"
    environment:
      - KAFKA_BROKER_ID=1
      - ALLOW_PLAINTEXT_LISTENER=yes 
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
    networks:
      - m-kafka-network
    depends_on:
      - zookeeper

  kafdrop:
    image: obsidiandynamics/kafdrop
    container_name: kafdrop
    restart: always
    ports:
      - "9000:9000"
    environment:
      KAFKA_BROKERCONNECT: "kafka:9092"
    networks:
      - m-kafka-network
    depends_on:
      - kafka

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

networks:
  m-kafka-network:

部分参数解释:

1、KAFKA_CFG_LISTENERS:

设置为 PLAINTEXT://0.0.0.0:9092 允许 Kafka 从任何 IP 地址接受连接。

2、ALLOW_PLAINTEXT_LISTENER=yes

这个参数允许 Kafka 接受未加密的连接,即使用 PLAINTEXT 协议的连接。这对于测试环境很有用,但在生产环境中,通常建议使用加密的连接(如 SSL/TLS)来保证数据安全。

验证配置:

javascript 复制代码
docker-compose -f docker-compose.yml config

启动服务

执行命令

javascript 复制代码
docker-compose up -d

执行结果

查看是否启动

javascript 复制代码
docker-compose ps

执行结果

如果服务未启动,可以执行下面命令查看日志

javascript 复制代码
docker-compose logs

验证服务

浏览器访问 kafdrop 服务地址:127.0.0.1:9000 ,并创建一个Topic。

停止服务

执行命令

javascript 复制代码
docker-compose stop

如果想停止并删除所有由 docker-compose.yml 定义的容器,网络和其他资源,执行

javascript 复制代码
docker-compose down
相关推荐
copyer_xyf3 小时前
Docker 入门与实战:容器化 React + NestJS 项目
docker
刘马想放假4 小时前
Docker 从入门到进阶:一篇写给工程师的系统化实战指南
运维·docker·容器
zjun30215 小时前
如何搭建TRAE IDE 连接到容器开发环境
docker·容器·ascend·trae
寒冰碧海5 小时前
大模型部署从0到1(一):通用环境全流程准备|NVIDIA驱动+Docker+NVIDIA Container Toolkit
运维·docker·容器
hdsoft_huge7 小时前
SpringBoot 系列 20:Jar 打包 + Docker 容器化 + Compose 一键部署|服务器上线 & 零停机平滑升级全教程
spring boot·docker·jar
你想考研啊7 小时前
七、Docker 容器 + Docker Compose单机部署理发店系统
docker·容器·composer
梦梦代码精7 小时前
BuildingAI:企业级开源智能体搭建平台的破局者
前端·docker·架构·开源·代码规范
富士康质检员张全蛋7 小时前
Kafka的操作 生产消息
分布式·kafka
未来可期丶9 小时前
【开发环境】Windows+Docker Desktop+WSL2最佳实践
windows·docker·docker desktop·wsl2
AOwhisky20 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm