Apptiva Logo

Cloud Native Buildpacks mit Paketo

Dockerfiles sind zwar toll, doch in vielen Projekten könnte man darauf verzichten.

Publiziert am von Markus Tanner

Dockerfiles - ja, aber

Bei uns werden fast alle Applikationen als Docker-Container ausgeliefert. Für die Erstellung von Containers schreiben wir in der Regel ein Dockerfile. Das ist eigentlich eine tolle und sehr flexible Sache. Doch es gibt auch Punkte, die man beim Erstellen von Dockerfiles nicht ausblenden darf:

  • Die Files müssen immer wieder aktualisiert werden, z.B. bei Framework-Updates.
  • Für die Produktion gehärtete Containers erstellen, ist nicht nicht trivial.

Cloud Native Buildpacks und packet.io

Diese Arbeit kann man sich unter Umständen sparen, indem man Cloud Native Buildpacks einsetzt. Die Idee von diesen Buildpacks stammen ursprünglich von Heroku. Daraus ist dann eine Spezifikation entstanden, welche es ermöglicht mit einem Kommando vom Source Code zum Docker-Container zu kommen.

Eine Implementation dieser Spezifikation ist paketo. Mit dem Kommando “pack” wird zunächst eine “detect”-Phase ausgeführt, um zu ermitteln, welches Buildpack am besten zum Code passt. Bei der zweiten Phase “build” wird dann anhand der ermittelten Informationen ein neues Image erstellt, welches sogar OCI-konform ist.

So einfach in Spring Boot

Mit Spring Boot ist die Erstellung von solchen Buildpacks enorm simpel. Das Spring Boot Gradle Plugin beinhaltet bereits einen Task, welcher das Buildpack erstellt. Man muss nur folgendes Kommando ausführen und schon wird der Container bereitgestellt.

./gradlew bootBuildImage