Zum Hauptinhalt springen

Dockerfile Build (Beta)

Mit Dockerfile-Builds kann deplo.io jede App erstellen, die mit einem Dockerfile gebaut werden kann.

Beispiel-App

In unserem Beispiele-Repository haben wir eine einfache Dockerfile-App. Sie können sie mit nctl erstellen:

nctl create application dockerfile-rust \
--git-url=https://github.com/ninech/deploio-examples \
--git-sub-path=dockerfile/rust \
--dockerfile

Konfigurieren des zu verwendenden Dockerfiles

Standardmässig wird das Dockerfile im Stammverzeichnis Ihres Repositorys verwendet. Um eine andere Datei zu verwenden, können Sie mit dem Flag --dockerfile-path ein Dockerfile an einem anderen Ort in Ihrem Repository angeben.

--dockerfile-path="path/to/Dockerfile"

Konfigurieren des Docker-Build-Contexts

Standardmässig wird der Build-Context auf das Stammverzeichnis Ihres Repositorys gesetzt. Um ein anderes Verzeichnis zu verwenden, können Sie mit dem Flag --dockerfile-build-context einen anderen Ort angeben.

--dockerfile-build-context="path/to/build/context/"

Sicherstellen, dass Ihre Dockerfile-App erfolgreich veröffentlicht wird

Die deplo.io-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 App-Health wird durch eine TCP-Probe zum konfigurierten Port überprüft 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, wird sie automatisch neu gestartet.

Empfehlung zur Image Grösse

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 deplo.io.

  • 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.