Erste Schritte mit Deploio
Deploio ist eine Fully Managed App-Plattform, die nur den Quellcode deiner Web-Applikation benötigt und Continuous Development und Deployment für die Anwendung komplett übernimmt. Aktuell unterstützt Deploio die folgenden Programmiersprachen:
Wenn deine bevorzugte Sprache fehlt, du aber gerne Deploio nutzen würdest, kontaktiere uns oder aktiviere das Dockerfile feature. Wir werden je nach Nachfrage weitere Sprachen hinzufügen.
Deployment deiner ersten Applikation
Deploio steht über das Cockpit, über ein CLI und eine API zur Verfügung. Um das CLI zu installieren und einzurichten, sieh dir bitte die
nctl
-Dokumentation an.
Sobald nctl eingerichtet ist, kannst du deine erste Applikation erstellen. In
dieser Anleitung deployen wir eine der Beispiel-Apps, die wir in unserem
deploio-Beispiele-Repository
bereitgestellt haben.
Für das einfachste Beispiel benötigen wir nur die Git Url mit unserer App-Quelle und dem Unterverzeichnis, falls die Anwendung nicht im Hauptverzeichnis des Repositories zu finden ist. Du kannst das GitHub Repository gerne selbst durch Erstellen eines Forks nutzen, um Änderungen vorzunehmen und zu sehen, wie sich diese auf die App auswirken.
$ nctl create app go-example --git-url=https://github.com/ninech/deploio-examples --git-sub-path=go
Creating a new application
✓ created application "go-example" 🏗
✓ waiting for build to start ⏳
✓ building application 📦
✓ releasing application 🚦
✓ release available ⛺
Your application "go-example" is now available at:
https://go-example.46e4146.deploio.app
Nachdem die Applikation erfolgreich erstellt wurde, kannst du auf sie zugreifen:
$ curl https://go-example.46e4146.deploio.app
Hello from a Go Deploio app!
Benutzung eines privaten Git Repositories
Im obigen Beispiel haben wir ein öffentliches Git Repository genutzt, welches keine Authentifizierung benötigt, um auf den darin enthaltenen Code zuzugreifen. Falls sich dein Applikations-Code in einem privaten Git Repository befindet, so kannst du verschiedene Authentifizierungsarten in deiner Deploio-Applikation konfigurieren.
Builds und Releases
Nachdem wir nun eine Applikation deployed haben, können wir ein bisschen näher ins Detail gehen und uns den Lebenszyklus der Anwendung ansehen. Die Erstellung teilt sich in zwei wichtige Phasen auf:
- Die Build-Phase wird von jeder Veränderung des Quellcodes angestossen und
erstellt
Builds. - Die Release-Phase wird veranlasst, wenn sich das Image entweder aufgrund
eines neuen Builds verändert, oder wenn eine Konfigurationsänderung
vorgenommen wird. Diese erstellt
Releases.
Builds und Releases können innerhalb des CLI mit den jeweiligen Befehlen
aufgelistet werden.
# alle Builds auflisten
$ nctl get builds
nctl get builds
NAME APPLICATION STATUS AGE
go-example-build-1 go-example success 5m
# alle Releases auflisten
$ nctl get releases
NAME BUILDNAME APPLICATION SIZE REPLICAS STATUS AGE
saved-hawkeye-2jcvs go-example-build-1 go-example micro 1 available 7m
Um exemplarisch einen neuen Release zu erstellen, können wir die Replicas der
Applikation von 1 auf 2 erhöhen, indem wir den Befehl nctl update app
verwenden:
$ nctl update app go-example --replicas=2
✓ updated Application "go-example" ⬆️
$ nctl get releases
NAME BUILDNAME APPLICATION SIZE REPLICAS STATUS AGE
saved-hawkeye-2jcvs go-example-build-1 go-example micro 1 superseded 100m
helping-aztec-l492k go-example-build-1 go-example micro 2 available 6s
Wie du siehst, wurde ein weiterer Release erstellt, welcher die Applikation
nun mit 2 Replicas ausführt. Das Ausrollen des neuen Releases kann sehr schnell
vollzogen werden, da sich der App-Code selbst nicht verändert hat und der
gleiche Build damit wiederverwendet werden kann. Wenn wir den Quellcode
verändern würden, würde dies einen neuen Build verursachen. Sobald dieser neue
Build erfolgreich fertig gestellt werden konnte, würden wir dann ebenfalls
einen neuen Release basierend auf diesem neuen Build sehen.
Zugriff auf Logs
Um Logs anzuzeigen, Probleme zu beheben und eine Übersicht über die von deiner App verwendeten Ressourcen zu erhalten, siehe deine App überwachen.
Die Applikation deinen Bedürfnissen anpassen
In unserem vorherigen Beispiel haben wir das einfachste Anwendungsbeispiel für die Erstellung einer App auf Deploio gezeigt. Es steht allerdings eine ganze Reihe an Parametern bei der Applikationserstellung zur Verfügung, mit der du diese auf deine Bedürfnisse abstimmen kannst. Du kannst beispielsweise eigene Hostnamen oder Umgebungsvariablen benutzen. Die entsprechenden Dokumentationen findest du auf der linken Seite in unserer "Configurations"-Sektion.
Projekte
Wenn du gerade erst mit der Verwendung von nctl beginnst, wird jede Resource,
welche du erstellst, in deinem Hauptprojekt abgelegt. Dieses Hauptprojekt trägt
den Namen deiner Organisation. Um unterschiedliche Umgebungen logisch zu trennen,
kannst du Projekte erstellen. Dabei muss der Name deiner Organisation dem
Projektnamen vorangestellt werden. Beispielsweise könnte ein Projekt für die
Organisation acme den Namen acme-dev tragen. Du kannst deine Projekte dem
jeweiligen Zweck entsprechend beliebig benennen, solange ihnen der
Organisationsname vorangestellt ist.
$ nctl create project acme-dev
Creating new project acme-dev for organization acme
✓ created project "acme-dev" 🏗
✓ waiting for project to be ready ⏳
✓ project ready 🛫
Nachdem du ein neues Projekt erstellt hast, kannst du nctl mittels nctl auth set-project so konfigurieren, dass alle zukünftigen Befehle standardmässig auf
Resourcen dieses neuen Projektes angewandt werden.
$ nctl auth set-project acme-dev
Danach wird jeder Befehl, der auf Ressourcen zugreift, auf dieses Projekt
angewendet. Du kannst auch das -p/--project-Flag verwenden, um z.B. die
Applikation eines bestimmten Projekts zu sehen, ohne die standardmässige
Befehlsanwendung zu verändern. Um alle Apps in einem Projekt aufzulisten, kannst
du das -A/--all-projects-Flag nutzen.
Name vs. Anzeigename
Nachdem ein Projekt erstellt wurde, kann dessen Name nicht mehr geändert werden. Du kannst aber den Display Name jederzeit ändern.
- Name: Dies ist der interne Name des Projekts. Verwende ihn bei der Interaktion mit der API und bei der Verwendung von
nctl. - Display Name: Dies ist der Name, der im Cockpit angezeigt wird.
Wartungsfenster
Weitere Informationen findest du im Artikel Deploy.io wöchentliches Wartungsfenster.