造个轮子 - kafka镜像
说明
- 镜像基于xiaows/debian8-jdk8-ssh:2.0
- kafka版本2.11
安装kafka
- 下载kafka到本地
- 编写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