# 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/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 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 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 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 # Build plop and catlfish. RUN git clone https://git.nordu.net/plop.git RUN make -C plop 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 supervisord_log RUN chown -R catlfish:catlfish /var/run/catlfish 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"]