# Catlfish expects to find its configuration in # /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/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/db/catlfish-merge 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"]