summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2014-09-01 16:48:38 +0100
committerRobert Newson <rnewson@apache.org>2014-09-01 18:12:31 +0100
commitec4b673f6eb878716cfe75f113da9c2594d12938 (patch)
tree3ae9cdfc47a9d91dbf430be9944cb4fc59bbc0ec
parentd2dc02de925746950248f88db10dc87740dcff3a (diff)
downloadcouchdb-ec4b673f6eb878716cfe75f113da9c2594d12938.tar.gz
Improve and document Docker test cluster setup
-rw-r--r--DEVELOPERS25
-rw-r--r--Dockerfile40
-rw-r--r--Makefile10
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"]
diff --git a/Makefile b/Makefile
index b323d5860..71c147e3b 100644
--- a/Makefile
+++ b/Makefile
@@ -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