The Doppler Quarterly (DEUTSCHE) Frühjahr 2018 | Page 58

Dockerfile: FROM openjdk:8 COPY t   arget/demo-0.0.1-SNAPSHOT.jar /usr/src/demo-0.0.1- SNAPSHOT.jar CMD java -jar /usr/src/demo-0.0.1-SNAPSHOT.jar Jetzt, da wir eine Dockerfile definiert hatten, mussten wir ein Image erstellen und mit einem Tag versehen: $ docker image build —tag demo:v0.0.1 . Sending build context to Docker daemon 20.07MB Step 1/3 : FROM openjdk:8 —-> db77212ffe05 Step 2/3 : COPY target/demo-0.0.1-SNAPSHOT.jar /usr/src/demo-  0.0.1-SNAPSHOT.jar —-> Using cache —-> edff15005e12 Step 3/3 : CMD java -jar /usr/src/demo-0.0.1-SNAPSHOT.jar —-> Using cache —-> 5207b1f7b396 Successfully built 5207b1f7b396 Successfully tagged demo:v0.0.1 Der vorhergehende Befehl suchte nach der Dockerfile im aktuellen Verzeichnis „.“, las die Anweisungen in der Dockerfile, lud das Image herunter und kompi- lierte es mit dem Tag „demo:v0.0.1“. Nachdem wir das Image erstellt hatten, konnten wir es ausführen. $ docker container run —detach —publish 8080:8080 demo:v0.0.1  Wir führten den Container mit der Option „—detach“ aus, um ihn im Hinter- grund auszuführen. Da die Anwendung Verbindungen an Port 8080 abfragt, mussten wir diesen Port für den Host veröffentlichen. Darüber hinaus fragten wir nach dem Tag, das wir gerade erstellt hatten: „demo:v0.0.1“. An diesem Punkt konnten wir einen Browser verwenden, um eine Antwort von „http:// localhost:8080/“ zu erhalten. Nächste Schritte Sobald wir den Container lokal erstellt und getestet hatten, mussten wir ihn per Push in ein Registry übertragen. Wir erstellten eine Organisation im Docker Hub und verwendeten ein privates Repository zum Speichern aller Container-Versionen der Anwendung. Als Nächstes aktualisierten wir unsere CI/CD-Pipeline, um einen Build auszu- lösen, wenn eine Änderung festgeschrieben wird. Die Pipeline führt eine Kom- pilierung der Anwendung und einen Docker-Build der Dockerfile mit einem Versions-Tag durch und überträgt sie dann per Push in das Docker-Hub-Repository. Jetzt, da wir ein Docker-Image mit einem Versions-Tag haben, erfordert die Implementierung eines neuen Release nur ein Update des Container-Clusters für den Rollout einer neueren Version des Container