Dockerfile-kafka211-jdk

256 阅读1分钟

造个轮子 - kafka镜像

说明

  1. 镜像基于xiaows/debian8-jdk8-ssh:2.0
  2. kafka版本2.11

安装kafka

  1. 下载kafka到本地
  2. 编写dockerfile 2.1 通过echo命令在dockerfile中直接写入相关配置文件 2.2 删除*.cmd,并将*.sh赋予可执行权限 2.3 在/root目录下生成一个启动kafka集群的脚本cluster-kafka.sh 2.4 拷贝当前dockerfile到镜像中
#Dockerfile-kafka211-jdk
FROM xiaows/debian8-jdk8-ssh:2.0
MAINTAINER XIAOWS <xiaows08@163.com>
WORKDIR /root

#install kafka
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
ADD kafka_2.11-2.0.0.tgz /usr/local/
ENV KAFKA_HOME=/usr/local/kafka_2.11-2.0.0
ENV PAHT=$PATH:KAFKA_HOME/bin


RUN mkdir -p /data/kafka-logs;\
    #config kafka\
	echo 'broker.id=0' > $KAFKA_HOME/config/server-cluster.properties;\
    echo '#listeners=PLAINTEXT://:9094' >> $KAFKA_HOME/config/server-cluster.properties;\
    echo 'log.dir=/data/kafka-logs' >> $KAFKA_HOME/config/server-cluster.properties;\
    echo 'zookeeper.connect=zk-slave0:2181,zk-slave1:2181,zk-slave2:2181' >> $KAFKA_HOME/config/server-cluster.properties;\
    rm -rf $KAFKA_HOME/bin/*.cmd;\
    #start kafka script
    echo '#!/bin/bash' > cluster-kafka.sh;\
    echo 'if [ $# = 0 ]; then' >> cluster-kafka.sh;\
    echo '    echo "Please input commod of kafka {start|stop}"' >> cluster-kafka.sh;\
    echo '    exit 1' >> cluster-kafka.sh;\
    echo 'fi' >> cluster-kafka.sh;\
    echo 'for i in 0 1 2; do' >> cluster-kafka.sh;\
    echo '    ssh kafka-slave$i sed -i "s/broker.id=[0-9]*/broker.id=$((i + 1))/g" $KAFKA_HOME/config/server-cluster.properties;' >> cluster-kafka.sh;\
    echo '    ssh kafka-slave$i cat $KAFKA_HOME/config/server-cluster.properties;' >> cluster-kafka.sh;\
    echo '    ssh kafka-slave$i $KAFKA_HOME/bin/kafka-server-$1.sh $KAFKA_HOME/config/server-cluster.properties > log&' >> cluster-kafka.sh;\
    echo 'done' >> cluster-kafka.sh;\
    # echo 'tailf -200 log' >> cluster-kafka.sh;\
    chmod +x *.sh
    # $KAFKA_HOME/bin/kafka-topics.sh --zookeeper zk-slave0:2181,zk-slave1:2181,zk-slave2:21811 --create --replication-factor 3 --partitions 1 --topic $1
    # $KAFKA_HOME/bin/kafka-topics.sh --zookeeper zk-slave0:2181,zk-slave1:2181,zk-slave2:21811 --list
COPY ./Dockerfile-kafka211-jdk /root/

构建镜像

docker build -f Dockerfile-kafka211-jdk -t xiaows/kafka211-jdk:2.0 .

接下来就可以用之前那个启动集群镜像脚本来启动容器和集群啦~

./start-cluster.sh xiaows/kafka211-jdk:2.0 kafka ./cluster.sh start