Merge branch 'stable-2.16' into stable-3.0

* stable-2.16:
  Set version to 2.16.17

Change-Id: Ic0e77f34636041ed8eec538c58640bda51177848
diff --git a/README.md b/README.md
index e5eb1b0..2fac467 100644
--- a/README.md
+++ b/README.md
@@ -28,15 +28,15 @@
 ## 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
+to a state of the repository, where this version of Gerrit (e.g. 3.0.0) 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
+git checkout v3.0.0
 ```
 
-Navigate to either `./centos/7` or `./ubuntu/16` to build the centos- or ubuntu-based docker image,
+Navigate to either `./centos/7` or `./ubuntu/18` to build the centos- or ubuntu-based docker image,
 respectively. Then run:
 
 ```
@@ -111,11 +111,12 @@
     volumes:
       - /external/gerrit/etc:/var/gerrit/etc
       - /external/gerrit/git:/var/gerrit/git
+      - /external/gerrit/db:/var/gerrit/db
       - /external/gerrit/index:/var/gerrit/index
       - /external/gerrit/cache:/var/gerrit/cache
     environment:
       - CANONICAL_WEB_URL=http://localhost
-#    entrypoint: java -jar /var/gerrit/bin/gerrit.war init -d /var/gerrit
+    # entrypoint: /entrypoint.sh init
 
   ldap:
     image: osixia/openldap
@@ -143,10 +144,6 @@
   basePath = git
   canonicalWebUrl = http://localhost
 
-[database]
-  type = h2
-  database = db/ReviewDB
-
 [index]
   type = LUCENE
 
@@ -187,9 +184,8 @@
 ### Initialize Gerrit DB and Git repositories with Docker
 
 The external filesystem needs to be initialized with gerrit.war beforehand:
-- ReviewDB created and populated with the initial DDL
-- All-Projects, All-Groups and All-Users Git repositories created in Gerrit
-- System Group UUIDs created in Git repositories and initialized in ReviewDB
+- All-Projects and All-Users Git repositories created in Gerrit
+- System Group UUIDs created in Git repositories
 
 The initialization can be done as a one-off operation before starting all containers.
 
diff --git a/centos/7/.dockerignore b/centos/7/.dockerignore
new file mode 100644
index 0000000..a8c4f8a
--- /dev/null
+++ b/centos/7/.dockerignore
@@ -0,0 +1 @@
+/var/gerrit/.gerritcodereview
diff --git a/centos/7/Dockerfile b/centos/7/Dockerfile
index f167fe6..735ed4c 100644
--- a/centos/7/Dockerfile
+++ b/centos/7/Dockerfile
@@ -1,22 +1,22 @@
-FROM centos:7.5.1804
+FROM centos:7.6.1810
 MAINTAINER Gerrit Code Review Community
 
 # Add Gerrit packages repository
 RUN rpm -i https://gerritforge.com/gerritforge-repo-1-2.noarch.rpm
 
+ADD entrypoint.sh /
+
 # Install OS pre-prequisites, OpenJDK and Gerrit in two subsequent transactions
 # (pre-trans Gerrit script needs to have access to the Java command)
 RUN yum -y install initscripts && \
     yum -y install java-1.8.0-openjdk && \
-    yum -y install gerrit-2.16.17-1  && rm -Rf /var/gerrit/{logs,tmp}/* && rm -Rf /var/gerrit/.gerritcodereview && \
+    yum -y install gerrit-3.0.7-1 && \
+    /entrypoint.sh init && \
+    rm -f /var/gerrit/etc/{ssh,secure}* && rm -Rf /var/gerrit/{static,index,logs,data,index,cache,git,db,tmp}/* && chown -R gerrit:gerrit /var/gerrit && \
     yum -y clean all
 
 USER gerrit
 
-RUN java -jar /var/gerrit/bin/gerrit.war init --batch --install-all-plugins -d /var/gerrit && \
-    java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit && \
-    git config -f /var/gerrit/etc/gerrit.config --add container.javaOptions "-Djava.security.egd=file:/dev/./urandom"
-
 ENV CANONICAL_WEB_URL=
 
 # Allow incoming traffic
@@ -24,7 +24,4 @@
 
 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}" && \
-    git config -f /var/gerrit/etc/gerrit.config noteDb.changes.autoMigrate true && \
-        /var/gerrit/bin/gerrit.sh run
+ENTRYPOINT /entrypoint.sh
diff --git a/centos/7/Dockerfile-dev b/centos/7/Dockerfile-dev
index 0f19627..2c2ee44 100644
--- a/centos/7/Dockerfile-dev
+++ b/centos/7/Dockerfile-dev
@@ -1,4 +1,4 @@
-FROM centos:7.5.1804
+FROM centos:7.6.1810
 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"
@@ -13,6 +13,8 @@
     git && \
     yum -y clean all
 
+ADD entrypoint.sh /
+
 RUN adduser -m gerrit --home-dir /home/gerrit && \
     mkdir -p /var/gerrit/bin && \
     chown -R gerrit /var/gerrit
@@ -21,8 +23,6 @@
 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=
@@ -32,7 +32,4 @@
 
 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
+ENTRYPOINT /entrypoint.sh
diff --git a/centos/7/entrypoint.sh b/centos/7/entrypoint.sh
new file mode 100755
index 0000000..cb459b5
--- /dev/null
+++ b/centos/7/entrypoint.sh
@@ -0,0 +1,17 @@
+#!/bin/bash -e
+
+if [ ! -d /var/gerrit/git/All-Projects.git ] || [ "$1" == "init" ]
+then
+  echo "Initializing Gerrit site ..."
+  java -jar /var/gerrit/bin/gerrit.war init --batch --install-all-plugins -d /var/gerrit
+  java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit
+  git config -f /var/gerrit/etc/gerrit.config --add container.javaOptions "-Djava.security.egd=file:/dev/./urandom"
+fi
+
+git config -f /var/gerrit/etc/gerrit.config gerrit.canonicalWebUrl "${CANONICAL_WEB_URL:-http://$HOSTNAME}"
+
+if [ "$1" != "init" ]
+then
+  echo "Running Gerrit ..."
+  exec /var/gerrit/bin/gerrit.sh run
+fi
diff --git a/ubuntu/16/Dockerfile b/ubuntu/16/Dockerfile
deleted file mode 100644
index 4af2b06..0000000
--- a/ubuntu/16/Dockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
-FROM ubuntu:16.04
-MAINTAINER Gerrit Code Review Community
-
-# Add Gerrit packages repository
-RUN echo "deb mirror://mirrorlist.gerritforge.com/deb gerrit contrib" > /etc/apt/sources.list.d/GerritForge.list
-RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1871F775
-
-RUN apt-get update
-RUN apt-key update
-RUN apt-get -y install sudo
-
-# Install OpenJDK and Gerrit in two subsequent transactions
-# (pre-trans Gerrit script needs to have access to the Java command)
-RUN apt-get -y install openjdk-8-jdk
-RUN apt-get -y install gerrit=2.16.17-1 && apt-mark hold gerrit && rm -f /var/gerrit/logs/*
-
-USER gerrit
-RUN java -jar /var/gerrit/bin/gerrit.war init --batch --install-all-plugins -d /var/gerrit
-RUN java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit
-RUN git config -f /var/gerrit/etc/gerrit.config --add 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}" && \
-    git config -f /var/gerrit/etc/gerrit.config noteDb.changes.autoMigrate true && \
-        /var/gerrit/bin/gerrit.sh run
diff --git a/ubuntu/18/.dockerignore b/ubuntu/18/.dockerignore
new file mode 100644
index 0000000..a8c4f8a
--- /dev/null
+++ b/ubuntu/18/.dockerignore
@@ -0,0 +1 @@
+/var/gerrit/.gerritcodereview
diff --git a/ubuntu/18/Dockerfile b/ubuntu/18/Dockerfile
new file mode 100644
index 0000000..55a5c20
--- /dev/null
+++ b/ubuntu/18/Dockerfile
@@ -0,0 +1,33 @@
+FROM ubuntu:18.04
+MAINTAINER Gerrit Code Review Community
+
+# Add Gerrit packages repository
+RUN apt-get update && \
+    apt-get -y install gnupg2
+RUN echo "deb mirror://mirrorlist.gerritforge.com/bionic gerrit contrib" > /etc/apt/sources.list.d/GerritForge.list
+RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 847005AE619067D5
+
+RUN apt-get update
+RUN apt-key update
+RUN apt-get -y install sudo
+
+ADD entrypoint.sh /
+
+# Install OpenJDK and Gerrit in two subsequent transactions
+# (pre-trans Gerrit script needs to have access to the Java command)
+RUN apt-get -y install openjdk-8-jdk
+RUN apt-get -y install gerrit=3.0.7-1 && \
+    apt-mark hold gerrit && \
+    /entrypoint.sh init && \
+    rm -f /var/gerrit/etc/{ssh,secure}* && rm -Rf /var/gerrit/{static,index,logs,data,index,cache,git,db,tmp}/* && chown -R gerrit:gerrit /var/gerrit
+
+USER gerrit
+
+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"]
+
+ENTRYPOINT /entrypoint.sh
diff --git a/ubuntu/16/Dockerfile-dev b/ubuntu/18/Dockerfile-dev
similarity index 70%
rename from ubuntu/16/Dockerfile-dev
rename to ubuntu/18/Dockerfile-dev
index 5b8cfae..761b9d6 100644
--- a/ubuntu/16/Dockerfile-dev
+++ b/ubuntu/18/Dockerfile-dev
@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.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"
@@ -11,6 +11,8 @@
     git && \
     rm -rf /var/lib/apt/lists/*
 
+ADD entrypoint.sh /
+
 RUN adduser --disabled-password --gecos "" gerrit --home /home/gerrit && \
     mkdir -p /var/gerrit/bin && \
     chown -R gerrit /var/gerrit
@@ -19,8 +21,6 @@
 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=
@@ -30,7 +30,4 @@
 
 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
+ENTRYPOINT /entrypoint.sh
diff --git a/ubuntu/18/entrypoint.sh b/ubuntu/18/entrypoint.sh
new file mode 100755
index 0000000..cb459b5
--- /dev/null
+++ b/ubuntu/18/entrypoint.sh
@@ -0,0 +1,17 @@
+#!/bin/bash -e
+
+if [ ! -d /var/gerrit/git/All-Projects.git ] || [ "$1" == "init" ]
+then
+  echo "Initializing Gerrit site ..."
+  java -jar /var/gerrit/bin/gerrit.war init --batch --install-all-plugins -d /var/gerrit
+  java -jar /var/gerrit/bin/gerrit.war reindex -d /var/gerrit
+  git config -f /var/gerrit/etc/gerrit.config --add container.javaOptions "-Djava.security.egd=file:/dev/./urandom"
+fi
+
+git config -f /var/gerrit/etc/gerrit.config gerrit.canonicalWebUrl "${CANONICAL_WEB_URL:-http://$HOSTNAME}"
+
+if [ "$1" != "init" ]
+then
+  echo "Running Gerrit ..."
+  exec /var/gerrit/bin/gerrit.sh run
+fi