Docker中Kafka容器创建/更新Topic支持多分区实现方式

 更新时间:2025年12月02日 08:50:24   作者:宋发元  
本文详细介绍了如何在Docker中部署和配置Kafka,并通过脚本检测和更新Topic的分区数,如果Topic已经存在,则将其分区数更新为5个;如果不存在,则新建一个名为http_capture的Topic

前提

自行通过docker部署好kafka,并启动相关容器。

假设Topic为http_capture。

#docker-kafka
kafka_dir=/opt/docker/kafka/build
sudo rm -rf ${kafka_dir}/*
cat > ${kafka_dir}/docker-compose.yml <<EOF
version: "3.3"
services:
  zookeeper:
    image: zookeeper:3.5.5
    restart: always
    container_name: dsms_zookeeper
    ports:
      - "2181:2181"
    environment:
      - ZOO_MY_ID=1

  kafka:
    image: wurstmeister/kafka:2.13-2.8.1
    restart: always
    container_name: dsms_kafka
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_ADVERTISED_HOST_NAME=${local_ip}
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS=36000
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${local_ip}:9092
      - KAFKA_LISTENERS=PLAINTEXT://:9092
    ports:
      - "9092:9092"
    expose:
      - "9092"
    depends_on:
      - zookeeper
EOF
cd ${kafka_dir} && sudo /opt/bin/docker-compose up -d

Docker中Kafka容器创建/更新Topic支持多分区

检测Kafka运行正常后,如果Topic为http_capture的主题存在,则更新分区为5个,若不存在Topic,则新建。

#!/bin/bash

# 检查 Kafka 容器是否正常运行
while ! docker ps --format '{{.Names}}' | grep -q "^dsms_kafka$"; do
    echo "等待 Kafka 容器启动..."
    sleep 5
done

echo "Kafka 容器已成功启动."

# 在 Kafka 容器内执行命令,将结果保存到临时文件中
docker exec dsms_kafka kafka-topics.sh --list --zookeeper zookeeper:2181 > /tmp/kafka_topics_list.txt

# 检查 http_capture 主题是否存在
if grep -q "^http_capture$" /tmp/kafka_topics_list.txt; then
    echo "更新 http_capture 主题分区数量..."
    docker exec dsms_kafka kafka-topics.sh --alter --topic http_capture --partitions 5 --zookeeper zookeeper:2181
else
    echo "创建新的 http_capture 主题..."
    docker exec dsms_kafka kafka-topics.sh --create --topic http_capture --partitions 5 --replication-factor 1 --zookeeper zookeeper:2181
    echo "新的 http_capture 主题创建成功."
fi

# 删除临时文件
rm -f /tmp/kafka_topics_list.txt

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker安装opengauss数据库配置过程详解

    docker安装opengauss数据库配置过程详解

    这篇文章主要为大家介绍了docker安装opengauss数据库配置过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 使用portainer连接远程docker的教程

    使用portainer连接远程docker的教程

    Portainer是一个轻量级的docker环境管理UI,可以用来管理docker宿主机和docker swarm集群,这篇文章主要介绍了使用portainer连接远程docker的方法,需要的朋友可以参考下
    2020-03-03
  • 使用Docker部署pwgen简单密码生成器

    使用Docker部署pwgen简单密码生成器

    pwgen 主要用于生成随机密码或短语密码,本文就来介绍一下使用Docker部署pwgen简单密码生成器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Docker exec 的实现原理介绍

    Docker exec 的实现原理介绍

    这篇文章主要介绍了Docker exec的实现原理,详细解读了docker exec这个操作背后,Linux Namespace更具体的工作原理,这种通过操作系统进程相关的知识,逐步剖析Docker容器的方法,需要的朋友可以参考一下
    2022-04-04
  • docker+jenkins+gitee配置持续集成部署方式

    docker+jenkins+gitee配置持续集成部署方式

    这篇文章主要介绍了docker+jenkins+gitee配置持续集成部署方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 利用Docker搭建Laravel开发环境的完整步骤

    利用Docker搭建Laravel开发环境的完整步骤

    这篇文章主要给大家介绍了关于如何利用Docker搭建Laravel开发环境的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用Laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 优雅地删除Docker容器与镜像的具体步骤

    优雅地删除Docker容器与镜像的具体步骤

    在使用 Docker 进行容器化管理时,随着时间的推移,镜像和容器会不断累积,占用大量存储空间,如果不及时清理,它们可能会影响系统的运行效率,本文将详细介绍 Docker 中镜像和容器的区别,如何删除它们,需要的朋友可以参考下
    2025-09-09
  • docker常用命令整理汇总(新手必备!)

    docker常用命令整理汇总(新手必备!)

    这篇文章主要给大家介绍了关于docker常用命令的相关资料,包括docker的启动、停止、重启、创建、查看等等,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Docker Compose从安装到使用详细过程

    Docker Compose从安装到使用详细过程

    Docker Compose是Docker官方提供的一个工具,用于定义和运行多容器 Docker应用程序,本文给大家介绍Docker Compose从安装到使用详细过程,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • 如何基于Dockerfile构建tomcat镜像

    如何基于Dockerfile构建tomcat镜像

    这篇文章主要介绍了如何基于Dockerfile构建tomcat镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论