Maven, Gradle: Build Docker image.

Change-Id: Ibf90cd31af67f847d67bd34fe1a8d73d49550088
diff --git a/build.gradle b/build.gradle
index ae57661..374b627 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,7 @@
 plugins {
     id 'java'
     id 'io.quarkus'
+    id "com.bmuschko.docker-remote-api" version "${dockerPluginVersion}"
     id "com.diffplug.gradle.spotless" version "${spotlessPluginVersion}"
     id "com.github.ben-manes.versions" version "${versionsPluginVersion}"
     id "se.patrikerdes.use-latest-versions" version "${useLatestVersionsPluginVersion}"
@@ -85,8 +86,8 @@
   }
 }
 
-group 'eu.mulk'
-version '0.1.0-SNAPSHOT'
+group "eu.mulk"
+version "${projectVersion}"
 
 task yarnInstall(type:Exec) {
   workingDir "src/main/resources/META-INF/resources"
@@ -113,3 +114,18 @@
 }
 
 quarkusBuild.dependsOn compileWeb
+
+task buildDocker(type: com.bmuschko.gradle.docker.tasks.image.DockerBuildImage) {
+    inputDir = file(".")
+    dockerFile = file("src/main/docker/Dockerfile.jvm")
+    images.add("docker.benkard.de/mulk/mulkcms2:${projectVersion}")
+}
+
+buildDocker.dependsOn quarkusBuild
+assemble.dependsOn buildDocker
+
+task pushDocker(type: com.bmuschko.gradle.docker.tasks.image.DockerPushImage) {
+    images.add("docker.benkard.de/mulk/mulkcms2:${projectVersion}")
+}
+
+pushDocker.dependsOn buildDocker
diff --git a/gradle.properties b/gradle.properties
index d7dc937..f607976 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,5 @@
+projectVersion = 0.1.0-SNAPSHOT
+
 quarkusPlatformGroupId = io.quarkus
 
 #quarkusPlatformArtifactId = quarkus-universe-bom
@@ -9,6 +11,7 @@
 #quarkusPlatformVersion = 999-SNAPSHOT
 #quarkusPluginVersion = 999-SNAPSHOT
 
+dockerPluginVersion = 6.1.3
 spotlessPluginVersion = 3.27.1
 versionsPluginVersion = 0.27.0
 useLatestVersionsPluginVersion = 0.2.13
diff --git a/pom.xml b/pom.xml
index 3fcdc0d..a20aed5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,7 @@
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
     <compiler-plugin.version>3.8.1</compiler-plugin.version>
+    <dockerfile-plugin.version>1.4.13</dockerfile-plugin.version>
     <quarkus-plugin.version>1.2.0.Final</quarkus-plugin.version>
     <surefire-plugin.version>3.0.0-M4</surefire-plugin.version>
     <spotless-plugin.version>1.26.1</spotless-plugin.version>
@@ -291,6 +292,27 @@
           </java>
         </configuration>
       </plugin>
+
+      <plugin>
+        <groupId>com.spotify</groupId>
+        <artifactId>dockerfile-maven-plugin</artifactId>
+        <version>${dockerfile-plugin.version}</version>
+        <executions>
+          <execution>
+            <id>default</id>
+            <goals>
+              <goal>build</goal>
+              <goal>push</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <dockerfile>src/main/docker/Dockerfile.jvm</dockerfile>
+          <repository>docker.benkard.de/mulk/mulkcms2</repository>
+          <tag>${project.version}</tag>
+        </configuration>
+      </plugin>
+
     </plugins>
 
     <resources>
diff --git a/src/main/docker/Dockerfile.jvm b/src/main/docker/Dockerfile.jvm
index c7ff48c..5c726c5 100644
--- a/src/main/docker/Dockerfile.jvm
+++ b/src/main/docker/Dockerfile.jvm
@@ -7,28 +7,25 @@
 #
 # Then, build the image with:
 #
-# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/mulkcms2-jvm .
+# docker build -f src/main/docker/Dockerfile.jvm -t docker.benkard.de/mulk/mulkcms2 .
 #
 # Then run the container using:
 #
-# docker run -i --rm -p 8080:8080 quarkus/mulkcms2-jvm
+# docker run -i --rm -p 8080:8080 docker.benkard.de/mulk/mulkcms2
 #
 ###
-FROM fabric8/java-alpine-openjdk8-jre:1.6.5
-ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
-ENV AB_ENABLED=jmx_exporter
+FROM adoptopenjdk:13-jre-hotspot
 
-# Be prepared for running in OpenShift too
-RUN adduser -G root --no-create-home --disabled-password 1001 \
-  && chown -R 1001 /deployments \
+RUN mkdir -p /deployments
+
+RUN useradd --user-group --uid 1200 java \
+  && chown -R java /deployments \
   && chmod -R "g+rwX" /deployments \
-  && chown -R 1001:root /deployments
+  && chown -R java:java /deployments
 
 COPY build/lib/* /deployments/lib/
 COPY build/*-runner.jar /deployments/app.jar
 EXPOSE 8080
 
-# run with user 1001
-USER 1001
-
-ENTRYPOINT [ "/deployments/run-java.sh" ]
\ No newline at end of file
+USER java
+ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseShenandoahGC", "-XX:ShenandoahGCHeuristics=compact", "-Dquarkus.http.host=0.0.0.0", "-Djava.util.logging.manager=org.jboss.logmanager.LogManager", "-jar", "/deployments/app.jar"]