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