summaryrefslogtreecommitdiff
path: root/catlfish-dev/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'catlfish-dev/Dockerfile')
-rw-r--r--catlfish-dev/Dockerfile89
1 files changed, 89 insertions, 0 deletions
diff --git a/catlfish-dev/Dockerfile b/catlfish-dev/Dockerfile
new file mode 100644
index 0000000..e9080c4
--- /dev/null
+++ b/catlfish-dev/Dockerfile
@@ -0,0 +1,89 @@
+# Catlfish expects to find a large part of its configuration in
+# /usr/local/etc/catlfish/, so mounting that directory is
+# recommended. This can be achieved by using the `-v' flag to `docker
+# run'.
+
+# NOTE: The directory in the _host_ system that's mounted at
+# /var/db/catlfish in the container has to be writable by a _host_
+# user with uid 147.
+
+# Example, running a frontend node named frontend-1:
+# $ docker run \
+# -v /etc/catlfish:/usr/local/etc/catlfish:ro \
+# -v /var/local/db/catlfish:/db/catlfish \
+# -p 8080:8080 -p 8082:8082 \
+# catlfish:latest frontend frontend-1
+#
+# Example, running a merge node named merge-1:
+# $ docker run \
+# -e MERGE_DB_DIR=/db/catlfish-merge \
+# -v /etc/catlfish:/usr/local/etc/catlfish:ro \
+# -v /var/local/db/catlfish-merge:/db/catlfish-merge \
+# catlfish merge merge-1
+
+FROM erlang
+RUN apt-get update
+RUN echo 'debconf debconf/frontend select noninteractive' | debconf-set-selections
+
+# For building. g++ and OpenSSL is for SoftHSMv2.
+RUN apt-get -y -q install gcc git make curl g++ libssl-dev
+
+# For merge.
+RUN apt-get -y -q install git python-ecdsa python-yaml
+
+# Build all dependencies.
+
+WORKDIR /usr/local/src
+RUN curl https://www.ct.nordu.net/dist/mochiweb-v2.12.2.tar.gz | tar xzf -
+RUN ln -s mochiweb-2.12.2 mochiweb
+RUN make -C mochiweb
+
+WORKDIR /usr/local/src
+RUN curl https://www.ct.nordu.net/dist/lager-2.1.1.tar.gz | tar xzf -
+RUN ln -s lager-2.1.1 lager
+RUN mkdir lager/deps
+RUN curl https://www.ct.nordu.net/dist/goldrush-0.1.6.tar.gz | tar xzf - -C lager/deps && ln -s goldrush-0.1.6 lager/deps/goldrush
+RUN make -C lager
+
+WORKDIR /usr/local/src
+RUN curl https://www.ct.nordu.net/dist/hackney-1.1.0.tar.gz | tar xzf -
+RUN ln -s hackney-1.1.0 hackney
+RUN mkdir hackney/deps
+RUN curl https://www.ct.nordu.net/dist/erlang-idna-1.0.2.tar.gz | tar xzf - -C hackney/deps && ln -s erlang-idna-1.0.2 hackney/deps/idna
+RUN curl https://www.ct.nordu.net/dist/ssl_verify_hostname-1.0.4.tar.gz | tar xzf - -C hackney/deps && ln -s ssl_verify_hostname-1.0.4 hackney/deps/ssl_verify_hostname
+RUN make -C hackney REBAR=../lager/rebar
+
+WORKDIR /usr/local/src
+RUN curl https://www.ct.nordu.net/dist/SoftHSMv2-2.0.0b3-ndn1.tar.gz | tar xzf -
+WORKDIR /usr/local/src/SoftHSMv2-2.0.0b3
+RUN ./configure --prefix=/usr/local && make all install
+ADD softhsm2.conf /usr/local/etc/
+
+# Build plop and catlfish.
+WORKDIR /usr/local/src
+RUN git clone https://git.nordu.net/plop.git
+RUN make -C plop
+
+WORKDIR /usr/local/src
+RUN git clone https://git.nordu.net/catlfish.git
+RUN make -C catlfish PREFIX=/usr/local all release
+
+# Config dir is mounted from host using `-v' to 'docker run'.
+VOLUME /usr/local/etc/catlfish
+
+# Create a catlfish user.
+RUN groupadd --gid 147 catlfish
+RUN useradd --uid 147 --gid 147 catlfish
+
+# Working has to be where catlfish.config is. We want to run in
+# /var/run/catlfish and not in /usr/local/etc/catlfish, so symlink.
+RUN mkdir /var/run/catlfish
+WORKDIR /var/run/catlfish
+RUN mkdir erlang_log sasl_log merge_log
+RUN chown -R catlfish:catlfish /var/run/catlfish
+RUN ln -s /usr/local/etc/catlfish/catlfish.config /var/run/catlfish/
+
+ADD merge.sh /usr/local/catlfish/
+ADD start.sh /var/run/catlfish/
+USER catlfish
+ENTRYPOINT ["/var/run/catlfish/start.sh"]