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.