Ein Docker Image mit JIB bauen

Was ist JIB?

Das Google Container Tool JIB ist ein Werkzeug um einfach aus einer Anwendung ein Docker Image zu erzeugen. Docker Images sind im Prinzip auch nur Archive, so dass man diese auch ohne Docker bauen kann. Und genau tut das Tool JIB von Google. Es gibt jeweils ein Plugin für Maven und für Gradle. In diesem Beispiel konzentriere ich mich auf die Gradle Variante von JIB.

Setup

Für das JIB Plugin muss Gradle in mindestes der Version 4.6 vorhanden sein. Die aktuelle Version 1.0.2 wird wie gewohnt eingefügt.

plugins {
  id 'com.google.cloud.tools.jib' version '1.0.2'
}

Der Erste Build

Ein beherzigtes gradle jib erstellt uns ein Docker Image der Anwendung.

gradle jib

Den Default Server ändern

Benutzt eine Anwendung den TomCat, dann muss man das Basis Image ändern. Der Default nimmt JIB eine auf Jetty basierendes Distroless Image. Hier nun ein Beispiel für die Verwendung von TomCat 8.5, ein auf alpine basieredes Image.

jib {
  from.image = 'tomcat:8.5-jre8-alpine'

  // ROOT muss angepasst werden
  container.appRoot = '/usr/local/tomcat/webapps/ROOT'
}

Alternative

Mit Source 2 Image (S2I) von OpenShift steht hierzu auch eine Alternative zur Verfügung. Diese habe ich aber noch nicht evaluiert. Die Quellen findet man hier: https://github.com/openshift/source-to-image