From b280c136a4279d9b3c46936f4737c47d83dae2fd Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Fri, 27 Mar 2015 13:28:33 +0100 Subject: Docker packaging. --- packaging/docker/catlfish-dev/Dockerfile | 51 +++++++++++++++++++++----- packaging/docker/catlfish-dev/supervisord.conf | 2 +- 2 files changed, 43 insertions(+), 10 deletions(-) (limited to 'packaging/docker/catlfish-dev') diff --git a/packaging/docker/catlfish-dev/Dockerfile b/packaging/docker/catlfish-dev/Dockerfile index cbfc285..b1192cf 100644 --- a/packaging/docker/catlfish-dev/Dockerfile +++ b/packaging/docker/catlfish-dev/Dockerfile @@ -1,26 +1,59 @@ +# 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'. Example: + +# $ docker run -v /etc/catlfish:/usr/local/etc/catlfish catlfish + FROM erlang RUN apt-get update RUN echo 'debconf debconf/frontend select noninteractive' | debconf-set-selections -RUN apt-get install -y -q \ - gcc \ - git \ - make +RUN apt-get -y -q install gcc git make curl -WORKDIR /opt +# Build dependencies in /usr/local/src. +WORKDIR /usr/local/src -RUN git clone -b v2.12.2 https://github.com/mochi/mochiweb +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 git clone -b 2.1.1 https://github.com/basho/lager +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 git clone -b 1.1.0 https://github.com/benoitc/hackney.git +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 all release +RUN make -C catlfish all +RUN make -C catlfish PREFIX=/usr/local release + +# Config dir and database dir are mounted from host using `-v' to +# 'docker run'. +VOLUME /usr/local/catlfish +VOLUME /var/local/db/catlfish + +# Working directory is where catlfish.config is. We want to run in +# /var/run/catlfish and not in /usr/local/etc/catlfish, so symlink. +RUN mkdir -p /var/run/catlfish/erlang_log /var/run/catlfish/sasl_log +RUN chgrp -R daemon /var/run/catlfish +RUN chmod -R 775 /var/run/catlfish +RUN ln -s /usr/local/etc/catlfish/catlfish.config /var/run/catlfish/ +WORKDIR /var/run/catlfish + +# Don't run as root. +USER daemon +# Run supervisord. ADD supervisord.conf /etc/supervisor/ +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] diff --git a/packaging/docker/catlfish-dev/supervisord.conf b/packaging/docker/catlfish-dev/supervisord.conf index c973bff..8b317e0 100644 --- a/packaging/docker/catlfish-dev/supervisord.conf +++ b/packaging/docker/catlfish-dev/supervisord.conf @@ -2,4 +2,4 @@ nodaemon=true [program:catlfish] -command=/opt/catlfish/rel/bin/erl -config catlfish +command=/usr/local/catlfish/bin/run_erl /var/run/catlfish/ /var/run/catlfish/erlang_log/ "exec /usr/local/catlfish/bin/erl -config catlfish" -- cgit v1.1