diff options
author | Robert Newson <rnewson@apache.org> | 2014-09-01 16:48:38 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2014-09-01 18:12:31 +0100 |
commit | ec4b673f6eb878716cfe75f113da9c2594d12938 (patch) | |
tree | 3ae9cdfc47a9d91dbf430be9944cb4fc59bbc0ec | |
parent | d2dc02de925746950248f88db10dc87740dcff3a (diff) | |
download | couchdb-ec4b673f6eb878716cfe75f113da9c2594d12938.tar.gz |
Improve and document Docker test cluster setup
-rw-r--r-- | DEVELOPERS | 25 | ||||
-rw-r--r-- | Dockerfile | 40 | ||||
-rw-r--r-- | Makefile | 10 |
3 files changed, 58 insertions, 17 deletions
diff --git a/DEVELOPERS b/DEVELOPERS index 887446352..20d1a700e 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -142,6 +142,31 @@ Generate a coverage report by running: Please report any problems to the developer's mailing list. +Testing a cluster +----------------- + +We use Docker (https://docker.io) to safely run a local three node +cluster. + +Assuming you have Docker installed and running; + + + make docker-image + +This will create a docker image (tagged 'couchdb/dev-cluster') capable +of running a joined three node cluster. + +To start it up; + + make docker-start + +A three node cluster shoud now be running (you can now use `docker ps` +to find the exposed ports of the nodes). + +To stop it; + + make docker-stop + Releasing --------- diff --git a/Dockerfile b/Dockerfile index bc5a6e8d7..c5636525b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,33 +1,43 @@ -FROM debian:latest +FROM debian:wheezy MAINTAINER Robert Newson <rnewson@apache.org> ENV DEBIAN_FRONTEND noninteractive -# Install prereqs +# Configure backports RUN echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list RUN apt-get -qq update -RUN apt-get -y install build-essential git libmozjs185-dev libicu-dev erlang-nox erlang-dev python wget -# Set up user for the builds -RUN useradd -m couchdb +# Install prereqs +RUN apt-get --no-install-recommends -y install \ + build-essential \ + ca-certificates \ + curl \ + erlang-dev \ + erlang-nox \ + git \ + libicu-dev \ + libmozjs185-dev \ + python # Build rebar -USER couchdb -WORKDIR /home/couchdb - -RUN wget https://github.com/rebar/rebar/archive/2.5.0.tar.gz -RUN tar xzf 2.5.0.tar.gz -WORKDIR /home/couchdb/rebar-2.5.0 +RUN useradd -m rebar +USER rebar +WORKDIR /home/rebar +RUN curl -L https://github.com/rebar/rebar/archive/2.5.0.tar.gz | tar zxf - +WORKDIR /home/rebar/rebar-2.5.0 RUN ./bootstrap USER root RUN cp rebar /usr/local/bin/ +RUN chmod 755 /usr/local/bin/rebar # Build couchdb +RUN useradd -m couchdb +RUN mkdir -p /home/couchdb +ADD . /home/couchdb +USER root +RUN chown -R couchdb:couchdb /home/couchdb USER couchdb WORKDIR /home/couchdb -RUN git clone https://git-wip-us.apache.org/repos/asf/couchdb.git -WORKDIR /home/couchdb/couchdb - # We don't to be so strict for simple testing. RUN sed -i'' '/require_otp_vsn/d' rebar.config.script @@ -39,4 +49,4 @@ RUN ./configure RUN make EXPOSE 15984 25984 35984 15986 25986 35986 -ENTRYPOINT ["/home/couchdb/couchdb/dev/run"] +ENTRYPOINT ["/home/couchdb/dev/run"] @@ -54,8 +54,14 @@ install.mk: @echo "No install.mk found. Run ./configure" @exit 1 -docker: - @docker build --no-cache --rm -t couchdb/dev-cluster . +docker-image: + @docker build --rm -t couchdb/dev-cluster . + +docker-start: + @docker run -d -P -t couchdb/dev-cluster > .docker-id + +docker-stop: + @docker stop `cat .docker-id` eunit: @rebar eunit skip_deps=meck,mochiweb,lager |