Last active
December 28, 2015 07:09
-
-
Save smly/7462399 to your computer and use it in GitHub Desktop.
a Dockerfile to build Kafka 0.7 container on EC2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ubuntu:precise | |
MAINTAINER Kohei Ozaki <[email protected]> | |
ADD kafka-install.sh /kafka-install.sh | |
RUN /bin/bash /kafka-install.sh | |
EXPOSE 2888 3888 2181 9092 | |
# CMD /bin/bash /opt/kafka/run |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
REGION=ap-northeast-1 | |
KAFKA_DIST=http://ftp.riken.jp/net/apache/incubator/kafka/kafka-0.7.2-incubating/kafka-0.7.2-incubating-src.tgz | |
KAFKA_NAME=`basename ${KAFKA_DIST}` | |
KAFKA_DIRNAME=${KAFKA_NAME%.*} | |
cat <<EOF > /etc/apt/sources.list | |
deb http://${REGION}.ec2.archive.ubuntu.com/ubuntu precise main universe | |
deb http://${REGION}.ec2.archive.ubuntu.com/ubuntu precise-updates main universe | |
deb http://${REGION}.ec2.archive.ubuntu.com/ubuntu precise-security main universe | |
EOF | |
apt-get update | |
apt-get -y install wget openjdk-6-jdk | |
cd /opt | |
wget $KAFKA_DIST | |
tar zxvf $KAFKA_NAME | |
ln -s /opt/${KAFKA_DIRNAME} /opt/kafka | |
cd /opt/kafka | |
./sbt update | |
./sbt package | |
# zookeeper dir | |
mkdir /opt/kafka/zookeeper | |
cat <<EOF > /opt/kafka/config/zookeeper.properties | |
dataDir=/opt/kafka/zookeeper | |
clientPort=2181 | |
maxClientCnxns=0 | |
initLimit=5 | |
syncLimit=2 | |
#server.1=kafka01:2888:3888 | |
#server.2=kafka02:2888:3888 | |
#server.3=kafka03:2888:3888 | |
EOF | |
cat <<EOF > /opt/kafka/config/server.properties | |
brokerid=@brokerid@ | |
hostname=@hostname@ | |
port=9092 | |
num.threads=8 | |
socket.send.buffer=1048576 | |
socket.receive.buffer=1048576 | |
max.socket.request.bytes=104857600 | |
log.dir=/tmp/kafka-logs | |
num.partitions=1 | |
log.flush.interval=10000 | |
log.default.flush.interval.ms=1000 | |
log.default.flush.scheduler.interval.ms=1000 | |
log.retention.hours=168 | |
log.file.size=536870912 | |
log.cleanup.interval.mins=1 | |
enable.zookeeper=true | |
zk.connect=kafka01:2181 | |
zk.connectiontimeout.ms=1000000 | |
EOF | |
cat <<EOF > /opt/kafka/bin/run | |
#!/bin/bash | |
HOSTNAME=\`hostname\` | |
BROKER_ID=\${HOSTNAME: -1} | |
echo \${BROKER_ID} > /opt/kafka/zookeeper/myid | |
if [[ ! -e /opt/kafka/config/server.properties.bak ]]; then | |
cp /opt/kafka/config/server.properties{,.bak} | |
sed "s/@brokerid@/\${BROKER_ID}/" \ | |
/opt/kafka/config/server.properties.bak > \ | |
/opt/kafka/config/server.properties | |
cp /opt/kafka/config/server.properties{,.bak} | |
sed "s/@hostname@/\${HOSTNAME}/" \ | |
/opt/kafka/config/server.properties.bak > \ | |
/opt/kafka/config/server.properties | |
fi | |
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties &! | |
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties | |
EOF | |
chmod a+x /opt/kafka/bin/run |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment