summaryrefslogtreecommitdiff
path: root/packaging/docker/catlfish-dev
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/docker/catlfish-dev')
-rw-r--r--packaging/docker/catlfish-dev/Dockerfile21
-rwxr-xr-xpackaging/docker/catlfish-dev/start.sh21
-rw-r--r--packaging/docker/catlfish-dev/supervisord.conf2
3 files changed, 38 insertions, 6 deletions
diff --git a/packaging/docker/catlfish-dev/Dockerfile b/packaging/docker/catlfish-dev/Dockerfile
index 11ebed5..9897204 100644
--- a/packaging/docker/catlfish-dev/Dockerfile
+++ b/packaging/docker/catlfish-dev/Dockerfile
@@ -2,18 +2,29 @@
# /usr/local/etc/catlfish/catlfish.config so mounting
# /usr/local/etc/catlfish is recommended. This can be done using the
# `-v' flag to `docker run'.
-
+#
# NOTE: The directory on the host system that's mounted at
# /var/local/db/catlfish in the container has to be writable by a host
# user with uid 147.
-
+#
+# Example, running a frontend node:
+# $ docker run -v /etc/catlfish:/usr/local/etc/catlfish:ro catlfish
+# frontend /usr/local/catlfish
+#
+# Example, running a merge node:
# $ docker run -v /etc/catlfish:/usr/local/etc/catlfish:ro catlfish
+# merge /usr/local/catlfish /var/local/db/catlfish-merge
FROM erlang
RUN apt-get update
RUN echo 'debconf debconf/frontend select noninteractive' | debconf-set-selections
+
+# For building.
RUN apt-get -y -q install gcc git make curl
+# For merge.
+RUN apt-get -y -q install git python-ecdsa python-yaml
+
# Build dependencies in /usr/local/src.
WORKDIR /usr/local/src
@@ -41,10 +52,8 @@ RUN make -C plop
RUN git clone https://git.nordu.net/catlfish.git
RUN make -C catlfish PREFIX=/usr/local all release
-# Config dir and database dir are mounted from host using `-v' to
-# 'docker run'.
+# Config dir is mounted from host using `-v' to 'docker run'.
VOLUME /usr/local/etc/catlfish
-VOLUME /var/local/db/catlfish
# Create a catlfish user.
RUN groupadd --gid 147 catlfish
@@ -60,6 +69,8 @@ RUN ln -s /usr/local/etc/catlfish/catlfish.config /var/run/catlfish/
# Run supervisord.
ADD supervisord.conf /etc/supervisor/
+ADD merge.sh /usr/local/catlfish/
+ADD start.sh /var/run/catlfish/
WORKDIR /var/run/catlfish
USER catlfish
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
diff --git a/packaging/docker/catlfish-dev/start.sh b/packaging/docker/catlfish-dev/start.sh
new file mode 100755
index 0000000..60ba44a
--- /dev/null
+++ b/packaging/docker/catlfish-dev/start.sh
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+role=$1; shift
+erlbase=$1; shift
+database=$1; shift
+
+case $role in
+ frontend|storage|sign)
+ $erlbase/bin/run_erl \
+ /var/run/catlfish/ \
+ /var/run/catlfish/erlang_log/ \
+ "exec $erlbase/bin/erl -config catlfish"
+ ;;
+ merge)
+ ERL_LIBS=$erlbase/lib/catlfish-0.6.0-dev.ez/catlfish-0.6.0-dev
+ ERL_LIBS=$ERL_LIBS:$erlbase/lib/lager-2.1.1.ez/lager-2.1.1
+ $erlbase/merge.sh 300 3600 $database
+ ;;
+ *)
+ echo "catlfish: unknown role: $role"
+esac
diff --git a/packaging/docker/catlfish-dev/supervisord.conf b/packaging/docker/catlfish-dev/supervisord.conf
index f3493e5..8eda9b9 100644
--- a/packaging/docker/catlfish-dev/supervisord.conf
+++ b/packaging/docker/catlfish-dev/supervisord.conf
@@ -3,4 +3,4 @@ nodaemon=true
[program:catlfish]
childlogdir=/var/run/catlfish/supervisord_log
-command=/usr/local/catlfish/bin/run_erl /var/run/catlfish/ /var/run/catlfish/erlang_log/ "exec /usr/local/catlfish/bin/erl -config catlfish"
+command=/usr/local/catlfish/start.sh