diff options
Diffstat (limited to 'catlfish-dev/Dockerfile')
-rw-r--r-- | catlfish-dev/Dockerfile | 89 |
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"] |