Skip to content

Instantly share code, notes, and snippets.

@graffic
Created August 17, 2017 07:08
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save graffic/182aa64a5b239e63766d753f1ad1c3fb to your computer and use it in GitHub Desktop.
Save graffic/182aa64a5b239e63766d753f1ad1c3fb to your computer and use it in GitHub Desktop.
Alpine, java8, druid, mysql docker image
FROM anapsix/alpine-java:8_server-jre
ENV DRUID_VERSION=0.10.0 \
ZOOKEEPER_VERSION=3.4.10 \
PATH=/usr/local/bin:${PATH}
# Prepare the container to install the software
RUN set -ex && \
apk upgrade --update && \
apk add --update curl mariadb mariadb-client supervisor && \
rm -rf /var/cache/apk/* && \
# Zookeeper
curl http://mirrors.myaegean.gr/apache/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz | tar -xzf - -C /usr/local && \
cp /usr/local/zookeeper-${ZOOKEEPER_VERSION}/conf/zoo_sample.cfg /usr/local/zookeeper-${ZOOKEEPER_VERSION}/conf/zoo.cfg && \
ln -s /usr/local/zookeeper-${ZOOKEEPER_VERSION} /usr/local/zookeeper && \
# Druid
addgroup -S druid && \
adduser -S -G druid -h /var/lib/druid druid && \
curl http://static.druid.io/artifacts/releases/druid-${DRUID_VERSION}-bin.tar.gz | tar -xzf - -C /usr/local && \
ln -s /usr/local/druid-${DRUID_VERSION} /usr/local/druid && \
curl http://static.druid.io/artifacts/releases/mysql-metadata-storage-${DRUID_VERSION}.tar.gz | tar -xzf - -C /usr/local/druid/extensions && \
# Druid task logs
mkdir /var/log/druid && \
chown druid:druid /var/log/druid && \
# Remove not needed tools
apk del curl && \
# Mysql
mysql_install_db --user=mysql --rpm && \
(mysqld_safe &) && \
sleep 2 && \
# Druid mysql settings
mysql -u root -e "GRANT ALL ON druid.* TO 'druid'@'localhost' IDENTIFIED BY 'diurd'; CREATE database druid CHARACTER SET utf8;" && \
java -cp "/usr/local/druid/lib/*" \
-Ddruid.extensions.directory=/usr/local/druid/extensions \
'-Ddruid.extensions.loadList=["mysql-metadata-storage"]' \
-Ddruid.metadata.storage.type=mysql \
io.druid.cli.Main tools metadata-init \
--connectURI="jdbc:mysql://localhost:3306/druid" \
--user=druid --password=diurd && \
killall -TERM mysqld && \
sleep 2
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Expose ports:
# - 8081: HTTP (coordinator)
# - 8082: HTTP (broker)
# - 8083: HTTP (historical)
# - 3306: MySQL
# - 2181 2888 3888: ZooKeeper
EXPOSE 8081 8082 8083 3306 2181 2888 3888
ENTRYPOINT export HOSTIP="$(resolveip -s $HOSTNAME)" && exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
[supervisord]
nodaemon=true
loglevel=debug
[program:zookeeper]
command=/usr/local/zookeeper/bin/zkServer.sh start-foreground
user=daemon
priority=0
[program:mysql]
command=/usr/bin/mysqld_safe
user=mysql
priority=0
[program:druid-coordinator]
user=druid
command=java
-server
-Xmx1g
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Ddruid.host=%(ENV_HOSTIP)s
-Ddruid.extensions.loadList=[\"mysql-metadata-storage\"]
-Ddruid.extensions.directory=/usr/local/druid/extensions
-Ddruid.extensions.hadoopDependenciesDir=/usr/local/druid/hadoop-dependencies
-Ddruid.metadata.storage.type=mysql
-Ddruid.metadata.storage.connector.connectURI=jdbc:mysql://localhost:3306/druid
-Ddruid.metadata.storage.connector.user=druid
-Ddruid.metadata.storage.connector.password=diurd
-Ddruid.coordinator.asOverlord.enabled=true
-Ddruid.coordinator.asOverlord.overlordService=druid/overlord
-Ddruid.indexer.fork.property.druid.processing.numThreads=1
-Ddruid.indexer.storage.type=metadata
-Ddruid.indexer.queue.startDelay=PT0M
-Ddruid.indexer.runner.javaOpts="-server -Xmx1g -XX:MaxDirectMemorySize=2147483648"
-Ddruid.indexer.logs.directory=/var/log/druid
-Ddruid.processing.buffer.sizeBytes=536870912
-Ddruid.coordinator.startDelay=PT5S
-cp /usr/local/druid/lib/*
io.druid.cli.Main server coordinator
redirect_stderr=true
priority=100
[program:druid-historical]
user=druid
command=java
-server
-Xmx1g
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Ddruid.host=%(ENV_HOSTIP)s
-Ddruid.extensions.loadList=[\"druid-s3-extensions\"]
-Ddruid.extensions.directory=/usr/local/druid/extensions
-Ddruid.extensions.hadoopDependenciesDir=/usr/local/druid/hadoop-dependencies
-Ddruid.s3.accessKey=AKIAIMKECRUYKDQGR6YQ
-Ddruid.s3.secretKey=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
-Ddruid.computation.buffer.size=67108864
-Ddruid.segmentCache.locations="[{\"path\":\"/var/tmp/druid/indexCache\",\"maxSize\":5000000000}]"
-Ddruid.server.maxSize=5000000000
-cp /usr/local/druid/lib/*
io.druid.cli.Main server historical
redirect_stderr=true
priority=100
[program:druid-broker]
user=druid
command=java
-server
-Xmx1g
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Ddruid.host=%(ENV_HOSTIP)s
-Ddruid.computation.buffer.size=67108864
-Ddruid.broker.cache.sizeInBytes=33554432
-cp /usr/local/druid/lib/*
io.druid.cli.Main server broker
redirect_stderr=true
priority=100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment