本文使用 Bitnami/Kafka 提供的kafka容器镜像。详情参考:bitnami/kafka - Docker 镜像 |Docker 中心
创建Docker Compose文件
创建一个名为 docker-compose.yml 的文件,并复制以下内容
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)来保证数据安全。
验证配置:
docker-compose -f docker-compose.yml config
复制
启动服务
执行命令
docker-compose up -d
复制
执行结果
查看是否启动
docker-compose ps
复制
执行结果
如果服务未启动,可以执行下面命令查看日志
docker-compose logs
复制
验证服务
浏览器访问 kafdrop 服务地址:127.0.0.1:9000 ,并创建一个Topic。
停止服务
执行命令
docker-compose stop
复制
如果想停止并删除所有由 docker-compose.yml 定义的容器,网络和其他资源,执行
docker-compose down
复制