diff options
author | Linus Nordberg <linus@nordberg.se> | 2015-03-27 13:28:33 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2015-04-01 12:54:59 +0200 |
commit | 9afc78b42d13ec5ccbb61de02b637ec7217b8690 (patch) | |
tree | 0c8db80674f27f3ade9145e0052c73521a63d91a | |
parent | 8c5b1dbba571456e3b68bcf25e4ca9db9b7b669b (diff) |
Docker packaging.
-rw-r--r-- | Makefile | 11 | ||||
-rwxr-xr-x | makerelease.erl | 4 | ||||
-rw-r--r-- | packaging/docker/README | 23 | ||||
-rw-r--r-- | packaging/docker/base-debian:jessie/Dockerfile | 3 | ||||
-rwxr-xr-x | packaging/docker/build-from-source.sh (renamed from packaging/docker/build.sh) | 0 | ||||
-rw-r--r-- | packaging/docker/catlfish-dev/Dockerfile | 36 | ||||
-rw-r--r-- | packaging/docker/catlfish-dev/supervisord.conf | 2 | ||||
-rw-r--r-- | packaging/docker/erlang/Dockerfile | 2 |
8 files changed, 58 insertions, 23 deletions
@@ -1,14 +1,17 @@ +# Makefile for catlfish + PREFIX=rel build all: ./make.erl + clean: -rm ebin/*.beam + release: all rm -rf $(PREFIX) mkdir $(PREFIX) - ./makerelease.erl - mkdir $(PREFIX)/catlfish + ./makerelease.erl $(PREFIX) -include test/test.mk @@ -25,12 +28,12 @@ tests-prepare: mkdir $(PREFIX)/tests/known_roots cp tools/testcerts/roots/* $(PREFIX)/tests/known_roots @for machine in $(MACHINES); do \ - (cd $(PREFIX); ../tools/compileconfig.py --config=../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-$$machine.cfg) ; \ + tools/compileconfig.py --config=test/catlfish-test.cfg --localconfig test/catlfish-test-local-$$machine.cfg ; \ mkdir -p $(PREFIX)/tests/machine/machine-$$machine/db ; \ touch $(PREFIX)/tests/machine/machine-$$machine/db/index ; \ touch $(PREFIX)/tests/machine/machine-$$machine/db/newentries ; \ done - (cd $(PREFIX); ../tools/compileconfig.py --config=../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-signing.cfg) + tools/compileconfig.py --config test/catlfish-test.cfg --localconfig test/catlfish-test-local-signing.cfg mkdir $(PREFIX)/tests/privatekeys mkdir $(PREFIX)/tests/publickeys @for node in $(NODES); do \ diff --git a/makerelease.erl b/makerelease.erl index f72fdb6..16e5f7f 100755 --- a/makerelease.erl +++ b/makerelease.erl @@ -1,7 +1,7 @@ #!/usr/bin/env escript %% -*- erlang -*- -main(_) -> +main([DestDir]) -> {ok, Conf} = file:consult("reltool.config"), {ok, Spec} = reltool:get_target_spec(Conf), - ok = reltool:eval_target_spec(Spec, code:root_dir(), "rel"). + ok = reltool:eval_target_spec(Spec, code:root_dir(), DestDir). diff --git a/packaging/docker/README b/packaging/docker/README index 0a75c10..147fa41 100644 --- a/packaging/docker/README +++ b/packaging/docker/README @@ -1,14 +1,27 @@ -Requirements: +Information about creating a docker image for running catlfish from a +binary release or with catlfish built from source. + + +Requirements +------------ + - lack of expectations regarding security -- docker doesn't verify downloaded images - a 64-bit Linux system - lxc-docker version 1.3 or later -Build a docker image with catlfish. Note that you will have to cd into -this directory, catlfish/packaging/docker, in order for docker to find -the appropriate docker files. - $ ./build.sh +Building an image +----------------- + +Run build-from-release.sh or build-from-source.sh to build a docker +image with catlfish. Note that you will have to cd into this +directory, catlfish/packaging/docker, in order for docker to find the +appropriate docker files. + + +Running it +---------- Run the resulting image in interactive mode. diff --git a/packaging/docker/base-debian:jessie/Dockerfile b/packaging/docker/base-debian:jessie/Dockerfile index 6a30a45..dbd5d37 100644 --- a/packaging/docker/base-debian:jessie/Dockerfile +++ b/packaging/docker/base-debian:jessie/Dockerfile @@ -1,5 +1,6 @@ FROM debian:jessie RUN apt-get update RUN echo 'debconf debconf/frontend select noninteractive' | debconf-set-selections -RUN apt-get install -y -q supervisor +RUN apt-get -y -q upgrade +RUN apt-get -y -q install supervisor RUN mkdir -p /var/log/supervisor diff --git a/packaging/docker/build.sh b/packaging/docker/build-from-source.sh index 2b47222..2b47222 100755 --- a/packaging/docker/build.sh +++ b/packaging/docker/build-from-source.sh diff --git a/packaging/docker/catlfish-dev/Dockerfile b/packaging/docker/catlfish-dev/Dockerfile index cbfc285..ae50409 100644 --- a/packaging/docker/catlfish-dev/Dockerfile +++ b/packaging/docker/catlfish-dev/Dockerfile @@ -1,26 +1,44 @@ +# 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 +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 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/catlfish release + +VOLUME /usr/local/catlfish +VOLUME /var/local/db/catlfish ADD supervisord.conf /etc/supervisor/ +WORKDIR /usr/local/etc/catlfish +CMD ["/usr/bin/supervisord"] diff --git a/packaging/docker/catlfish-dev/supervisord.conf b/packaging/docker/catlfish-dev/supervisord.conf index c973bff..5fb2e52 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 -daemon /var/run/ /var/log/catlfish/ "exec bin/erl -config catlfish" diff --git a/packaging/docker/erlang/Dockerfile b/packaging/docker/erlang/Dockerfile index c33a22b..531064d 100644 --- a/packaging/docker/erlang/Dockerfile +++ b/packaging/docker/erlang/Dockerfile @@ -1,7 +1,7 @@ FROM base RUN apt-get update RUN echo 'debconf debconf/frontend select noninteractive' | debconf-set-selections -RUN apt-get install -y -q \ +RUN apt-get -y -q install \ erlang-base \ erlang-crypto \ erlang-dev \ |