From 352ade3dfb4890c40f17ebff2cfc55c21e8de20e Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Wed, 1 Apr 2015 22:14:13 +0200 Subject: [Docker] Add docker support for merge nodes. Also, run as a separate user in docker-dev. --- packaging/docker/catlfish-merge/Dockerfile | 41 ++++++++++++++++++++++++ packaging/docker/catlfish-merge/merge.sh | 27 ++++++++++++++++ packaging/docker/catlfish-merge/supervisord.conf | 6 ++++ 3 files changed, 74 insertions(+) create mode 100644 packaging/docker/catlfish-merge/Dockerfile create mode 100755 packaging/docker/catlfish-merge/merge.sh create mode 100644 packaging/docker/catlfish-merge/supervisord.conf (limited to 'packaging/docker/catlfish-merge') diff --git a/packaging/docker/catlfish-merge/Dockerfile b/packaging/docker/catlfish-merge/Dockerfile new file mode 100644 index 0000000..cf6fa7a --- /dev/null +++ b/packaging/docker/catlfish-merge/Dockerfile @@ -0,0 +1,41 @@ +# Docker file for catlfish merge. +# +# NOTE: The directory on the host system that's mounted at +# /var/local/db/catlfish-merge in the container has to be writable by +# a host user with uid 147. +# +# $ docker run \ +# -v /etc/catlfish:/usr/local/etc/catlfish:ro \ +# -v /var/local/db/catlfish-merge:/var/local/db/catlfish-merge \ +# catlfish-merge + +FROM base +RUN apt-get update +RUN echo 'debconf debconf/frontend select noninteractive' | debconf-set-selections +RUN apt-get -y -q install git python-ecdsa python-yaml + +WORKDIR /usr/local/src +RUN git clone https://git.nordu.net/catlfish.git + +# Config dir and database dir are mounted from host using `-v' to +# 'docker run'. +VOLUME /usr/local/etc/catlfish +VOLUME /var/local/db/catlfish-merge + +# Copy merge.sh. +RUN mkdir -p /usr/local/catlfish/bin +ADD merge.sh /usr/local/catlfish/bin/ + +# Create a catlfish user. +RUN groupadd --gid 147 catlfish +RUN useradd --uid 147 --gid 147 catlfish + +# We run from /var/run/catlfish. +RUN mkdir -p /var/run/catlfish/supervisord_log +RUN chown -R catlfish:catlfish /var/run/catlfish +WORKDIR /var/run/catlfish + +# Run supervisord. +ADD supervisord.conf /etc/supervisor/ +USER catlfish +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] diff --git a/packaging/docker/catlfish-merge/merge.sh b/packaging/docker/catlfish-merge/merge.sh new file mode 100755 index 0000000..b3658cd --- /dev/null +++ b/packaging/docker/catlfish-merge/merge.sh @@ -0,0 +1,27 @@ +#! /bin/sh + +# Default intervals +# - 5m before first merge +# - 20m between subsequent merges +S1=300; [ -n "$1" ] && S1=$1 +S2=1200; [ -n "$2" ] && S2=$2 + +DBDIR="$3" + +[ -d $DBDIR ] || mkdir $DBDIR +[ -d $DBDIR/chains ] || mkdir $DBDIR/chains +[ -e $DBDIR/logorder ] || touch $DBDIR/logorder + +date +echo "merge: waiting $(expr $S1 / 60)m$(expr $S1 % 60)s before merging for the first time" +sleep $S1 + +while true; do + echo "$0: merging" + date + python /usr/local/src/catlfish/tools/merge.py \ + --config /usr/local/etc/catlfish/system.cfg \ + --localconfig /usr/local/etc/catlfish/merge.cfg + echo "merge: waiting $(expr $S2 / 60)m$(expr $S2 % 60)s before merging again" + sleep $S2 +done diff --git a/packaging/docker/catlfish-merge/supervisord.conf b/packaging/docker/catlfish-merge/supervisord.conf new file mode 100644 index 0000000..deaf308 --- /dev/null +++ b/packaging/docker/catlfish-merge/supervisord.conf @@ -0,0 +1,6 @@ +[supervisord] +nodaemon=true + +[program:catlfish-merge] +childlogdir=/var/run/catlfish +command=/usr/local/catlfish/bin/merge.sh 300 1200 /var/local/db/catlfish-merge -- cgit v1.1