# 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 are for SoftHSMv2. RUN apt-get -y -q install gcc git make curl g++ libssl-dev nettle-dev libbsd-dev librhash-dev libpython2.7-dev # For merge, tests and tools. RUN apt-get -y -q install git python-ecdsa python-yaml python-pyasn1 python-requests unzip nettle-dev libbsd-dev librhash-dev # Build all dependencies. WORKDIR /usr/local/src RUN curl -s https://www.ct.nordu.net/dist/mochiweb-2.15.1.tar.gz | tar xzf - RUN ln -s mochiweb-2.15.1 mochiweb RUN make -C mochiweb WORKDIR /usr/local/src RUN curl -s https://www.ct.nordu.net/dist/lager-3.2.2.tar.gz | tar xzf - RUN ln -s lager-3.2.2 lager RUN mkdir lager/deps RUN curl -s https://www.ct.nordu.net/dist/goldrush-0.1.8.tar.gz | tar xzf - -C lager/deps && ln -s goldrush-0.1.8 lager/deps/goldrush RUN make -C lager WORKDIR /usr/local/src RUN curl -s 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 -s 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 -s 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 -s 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 # Move source dir into installation dir, to make $CWD/../lib/ make # sense for escripts. RUN mv /usr/local/src/catlfish /usr/local/catlfish/src # 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 ADD merge.sh /usr/local/catlfish/ ADD start.sh /var/run/catlfish/ USER catlfish ENTRYPOINT ["/var/run/catlfish/start.sh"]