Merge "Add Dockerfiles with development versions of Gerrit"
diff --git a/README.md b/README.md
index d81b9af..e5eb1b0 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,35 @@
 Starting from Ver. 2.14, a new introduction screen guides you through the basics of Gerrit
 and allows installing additional plugins downloaded from [Gerrit CI](https://gerrit-ci.gerritforge.com).
 
+## Build docker image
+
+For docker images that contain released Gerrit versions, tags exist in this git repository pointing
+to a state of the repository, where this version of Gerrit (e.g. 2.15.4) is referenced in the
+Dockerfiles. To build such a docker image for development purposes, checkout the respective version
+tag, e.g.:
+
+```
+git checkout v2.15.4
+```
+
+Navigate to either `./centos/7` or `./ubuntu/16` to build the centos- or ubuntu-based docker image,
+respectively. Then run:
+
+```
+docker build -t gerritcodereview/gerrit:$(git describe) .
+```
+
+To build an image containing a development build of Gerrit, e.g. to test a change, run the following
+command instead:
+
+```
+docker build --build-arg GERRIT_WAR_URL="<url>" -t gerritcodereview/gerrit -f Dockerfile-dev .
+```
+
+The `<url>` passed to the `GERRIT_WAR_URL`-build argument has to point to a Gerrit-`.war`-file.
+The build argument defaults to the URL pointing to the last successful build of the Gerrit master
+branch on the [Gerrit CI](https://gerrit-ci.gerritforge.com).
+
 ## Using persistent volumes
 
 Use docker persistent volumes to keep Gerrit data across restarts.
diff --git a/centos/7/Dockerfile-dev b/centos/7/Dockerfile-dev
new file mode 100644
index 0000000..0f19627
--- /dev/null
+++ b/centos/7/Dockerfile-dev
@@ -0,0 +1,38 @@
+FROM centos:7.5.1804
+MAINTAINER Gerrit Code Review Community
+
+ARG GERRIT_WAR_URL="https://gerrit-ci.gerritforge.com/view/Gerrit/job/Gerrit-bazel-master/lastSuccessfulBuild/artifact/gerrit/bazel-bin/release.war"
+
+# Allow remote connectivity and sudo and install OpenJDK and Git
+# (pre-trans Gerrit script needs to have access to the Java command)
+RUN yum -y install \
+    openssh-client \
+    initscripts \
+    sudo \
+    java-1.8.0-openjdk \
+    git && \
+    yum -y clean all
+
+RUN adduser -m gerrit --home-dir /home/gerrit && \
+    mkdir -p /var/gerrit/bin && \
+    chown -R gerrit /var/gerrit
+USER gerrit
+ADD --chown=gerrit $GERRIT_WAR_URL  /var/gerrit/bin/gerrit.war
+RUN mkdir -p /var/gerrit/etc && \
+    touch /var/gerrit/etc/gerrit.config && \
+    git config -f /var/gerrit/etc/gerrit.config auth.type DEVELOPMENT_BECOME_ANY_ACCOUNT && \
+    java -jar /var/gerrit/bin/gerrit.war init --dev --batch --install-all-plugins --no-auto-start -d /var/gerrit && \
+    java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit && \
+    git config --add -f /var/gerrit/etc/gerrit.config container.javaOptions "-Djava.security.egd=file:/dev/./urandom"
+
+ENV CANONICAL_WEB_URL=
+
+# Allow incoming traffic
+EXPOSE 29418 8080
+
+VOLUME ["/var/gerrit/git", "/var/gerrit/index", "/var/gerrit/cache", "/var/gerrit/db", "/var/gerrit/etc"]
+
+# Start Gerrit
+CMD git config -f /var/gerrit/etc/gerrit.config gerrit.canonicalWebUrl "${CANONICAL_WEB_URL:-http://$HOSTNAME:8080/}" && \
+    git config -f /var/gerrit/etc/gerrit.config noteDb.changes.autoMigrate true && \
+        /var/gerrit/bin/gerrit.sh run
\ No newline at end of file
diff --git a/ubuntu/16/Dockerfile-dev b/ubuntu/16/Dockerfile-dev
new file mode 100644
index 0000000..5b8cfae
--- /dev/null
+++ b/ubuntu/16/Dockerfile-dev
@@ -0,0 +1,36 @@
+FROM ubuntu:16.04
+MAINTAINER Gerrit Code Review Community
+
+ARG GERRIT_WAR_URL="https://gerrit-ci.gerritforge.com/view/Gerrit/job/Gerrit-bazel-master/lastSuccessfulBuild/artifact/gerrit/bazel-bin/release.war"
+
+# Install OpenJDK and Git and allow remote connectivity and sudo
+RUN apt-get update && apt-get -y install \
+    openssh-client \
+    sudo \
+    openjdk-8-jdk \
+    git && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN adduser --disabled-password --gecos "" gerrit --home /home/gerrit && \
+    mkdir -p /var/gerrit/bin && \
+    chown -R gerrit /var/gerrit
+USER gerrit
+ADD --chown=gerrit $GERRIT_WAR_URL  /var/gerrit/bin/gerrit.war
+RUN mkdir -p /var/gerrit/etc && \
+    touch /var/gerrit/etc/gerrit.config && \
+    git config -f /var/gerrit/etc/gerrit.config auth.type DEVELOPMENT_BECOME_ANY_ACCOUNT && \
+    java -jar /var/gerrit/bin/gerrit.war init --dev --batch --install-all-plugins -d /var/gerrit && \
+    java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit && \
+    git config --add -f /var/gerrit/etc/gerrit.config container.javaOptions "-Djava.security.egd=file:/dev/./urandom"
+
+ENV CANONICAL_WEB_URL=
+
+# Allow incoming traffic
+EXPOSE 29418 8080
+
+VOLUME ["/var/gerrit/git", "/var/gerrit/index", "/var/gerrit/cache", "/var/gerrit/db", "/var/gerrit/etc"]
+
+# Start Gerrit
+CMD git config -f /var/gerrit/etc/gerrit.config gerrit.canonicalWebUrl "${CANONICAL_WEB_URL:-http://$HOSTNAME:8080/}" && \
+    git config -f /var/gerrit/etc/gerrit.config noteDb.changes.autoMigrate true && \
+        /var/gerrit/bin/gerrit.sh run