Zum Hauptinhalt springen

Dockerfile Build

Mit Dockerfile-Builds kann Deploio jede App erstellen, die mit einem Dockerfile gebaut werden kann. Dies ist besonders nützlich, wenn Ihre Anwendung eine Programmiersprache oder Runtime verwendet, die Deploio noch nicht nativ unterstützt.

Erste Schritte

Das Erstellen einer Dockerfile-Applikation funktioniert wie bei jeder anderen Applikation in Deploio. Die einzigen Voraussetzungen sind, dass Ihr Repository ein Dockerfile enthält und dass Sie bei der Erstellung das Argument --dockerfile angeben (oder den Schalter Dockerfile Build im Cockpit aktivieren).

In unserem Beispiele-Repository haben wir eine einfache Dockerfile-App.

  1. Öffnen Sie die Applikation erstellen-Seite.
  2. Geben Sie Ihre Repository-Details an.
  3. Aktivieren Sie den Schalter Dockerfile Build.

Konfiguration

Deploio erlaubt es Ihnen, verschiedene Aspekte Ihrer Dockerfile-basierten Applikation anzupassen:

Dockerfile-Pfad

Standardmässig verwendet Deploio das Dockerfile im Stammverzeichnis Ihres Repositorys.

Nachdem Sie Dockerfile Build aktiviert haben, können Sie den Pfad im Feld Dockerfile Path angeben.

Build-Context

Standardmässig setzt Deploio den Build-Context auf das Stammverzeichnis Ihres Repositorys.

Nachdem Sie Dockerfile Build aktiviert haben, können Sie das Verzeichnis im Feld Build Context angeben.

Build-Argumente

Sie können Dockerfile Build-Argumente für Ihren Build übergeben.

Fügen Sie Ihre Argumente im Bereich Build Environment Variables hinzu.

Runtime und Health-Checks

Die Deploio-Runtime verwendet den im Dockerfile angegebenen ENTRYPOINT und CMD, um Ihre Anwendung zu starten.

Um Ihrer App Traffic zu liefern, erwartet die Runtime, dass sie auf einem TCP-Socket auf 0.0.0.0:$PORT lauscht. Der Port ist standardmässig 8080, kann aber in der App-Definition auf eine beliebige gültige Portnummer konfiguriert werden. Die Runtime überprüft die App-Health durch eine TCP-Probe zum konfigurierten Port und Traffic fliesst erst zur App, wenn die Probe erfolgreich ist. Schlägt die TCP-Probe zu irgendeinem Zeitpunkt des Lebenszyklus fehl, startet die Runtime die App neu. Auch wenn die App aus irgendeinem Grund beendet wird, startet sie die Runtime automatisch neu.

Image-Grösse optimieren

Mit Dockerfile-Build erstellte Images sollten unkomprimiert nicht grösser als 2 GiB sein. Es gibt ein festes Limit von 10 GiB für die gesamte Build-Umgebung, aber über 2 GiB kann das System nicht mehr alle Layers zwischenspeichern und Sie werden eine Verschlechterung der Build-Leistung feststellen.

Best Practices

Alle Best Practices, die für Dockerfiles im Allgemeinen gelten, gelten auch für Dockerfile-Builds auf Deploio. Eine umfassende Anleitung finden Sie in den offiziellen Docker Best Practices.

  • Versuchen Sie die Grösse Ihres Images zu minimieren, um schnellere Builds, schnellere Releases und eine verringerte Angriffsfläche zu erreichen.
  • Verwenden Sie Multi-Stage-Builds für kompilierte Sprachen, wann immer dies möglich ist.

Einschränkungen

Bitte beachten Sie die folgenden Einschränkungen:

  • Es ist derzeit nicht möglich, eine bestehende Applikation, welche Buildpacks verwendet, direkt in eine Dockerfile-basierte Applikation umzuwandeln. Sie müssen eine neue Applikation erstellen, um Dockerfile-Builds zu nutzen.

    Sie können nctl und jq verwenden, um eine neue Applikation mit der Konfiguration einer bestehenden zu erstellen:

    nctl get applications <existing-app-name> -o json | jq '
    del(.metadata.creationTimestamp, .metadata.resourceVersion, .metadata.uid, .status) |
    .metadata.name = "<new-app-name>" |
    .spec.forProvider.dockerfileBuild.enabled = true
    ' | nctl create -f -