Apps
Ein Container, den du ausrollst, skalierst und auf eine Domain legst. Der Ausgangspunkt für alles andere im Projekt.
Auf dieser Seite
Was das ist
Eine App ist ein Container-Image, das in deinem Projekt läuft, mit den Replicas, Ressourcen, Volumes und Netzwerkeinstellungen, die dazugehören. Fast alles andere auf der Plattform hängt an einer App: Eine Domain zeigt auf eine App, ein Volume wird in eine App eingebunden, eine Datenbank legt ihre Zugangsdaten in eine App.
klickops fängt beim Container-Image an. Deinen Code baut es nur, wenn du ein Repository verbindest. Eine eigene Pipeline betreibt es nicht. Hast du schon ein Image, bist du zwei Minuten von einer URL entfernt.
Wann du das brauchst
- Du hast ein Container-Image und willst es mit Hostname und TLS betreiben.
- Du hast ein Git-Repository und willst, dass klickops es für dich baut.
- Du ersetzt einen docker-compose-Dienst oder einen Heroku-Dyno durch etwas, das einen Node-Neustart übersteht.
Eine Aufgabe, die nach Zeitplan läuft und sich dann beendet, ist ein Scheduled Job und keine App. Apps sollen laufen. Ein Container, der sich sauber beendet, wird deshalb neu gestartet.
Eine App ausrollen
- Öffne dein Projekt, geh auf Apps und dann auf Deploy app.
- Wähl die Quelle: entweder ein Container-Image oder ein Repository, das klickops für dich baut. Fügst du eine Image-Referenz ein, liest klickops das Image aus und füllt Port, Startbefehl und die deklarierten Umgebungsvariablen vor.
- Bestätige den Port, auf dem deine App lauscht. Der Vorschlag kommt aus dem Image und stimmt meistens.
- Leg die Zahl der Replicas fest. Eines ist der Standard und lässt sich später ohne neues Deployment ändern. CPU und Memory wählst du nicht: klickops schneidet sie auf den tatsächlichen Verbrauch zu.
- Füg eine Domain hinzu, wenn die App gleich öffentlich sein soll. Du kannst das auch überspringen und später im Tab Domains nachholen.
- Prüf und rolle aus. Die App erscheint in der Liste mit Live-Status, während der Rollout läuft.


Der Alltag
Jede App öffnet auf Overview. Die Tab-Leiste darüber ist die ganze Oberfläche.
| Tab | Was dort liegt |
|---|---|
| Overview | Status, aktuelles Image, letzte Versionen, Rollback |
| Logs | Ausgabe des Containers, live und historisch |
| Metrics | CPU, Memory, Neustarts, Anfragen |
| Scaling | Zahl der Replicas und Autoscaling |
| Domains | Hostnamen, TLS, Weiterleitungen, Zugriffsmodus |
| Firewall | Wer diese App erreichen darf und was sie erreichen darf |
| Configuration | Umgebungsvariablen, Secrets, Verknüpfungen |
| Storage | Volumes, die in den Container eingebunden sind |
| Builds | Erscheint, wenn die App aus einem Repository gebaut wird |
| Previews | Umgebungen pro Pull Request, wenn ein Repository verbunden ist |
| Shell | Eine interaktive Sitzung im laufenden Container |
| Backups | Wiederherstellungspunkte für die App und ihre Volumes |
| Advanced | Notausgänge, inklusive Rohansicht der Ressourcen |
Einstellungen im Überblick
| Einstellung | Standard | Was sie bewirkt |
|---|---|---|
| Image | keines | Container-Image und Tag. Änderst du es, läuft ein Rollout. Der Bestätigungsdialog zeigt alt und neu. |
| Port | aus dem Image | Der Port, auf dem dein Container lauscht. Services und Domains leiten dorthin. |
| Replicas | 1 | Wie viele Instanzen laufen. Auf null zu skalieren stoppt die App, ohne sie zu löschen. |
| Autoscaling | aus | Fügt Replicas zwischen Unter- und Obergrenze hinzu, je nach CPU-Last. |
| CPU und Memory | automatisch | klickops schneidet beides auf den tatsächlichen Verbrauch zu. Du wählst keine Grösse. |
| Health-Check | an, TCP | Datenverkehr wartet, bis der Port eine Verbindung annimmt. Ein TCP-Check braucht keinen Health-Endpunkt. Hast du einen, stell auf HTTP um. |
| Als Nicht-Root ausführen | an | Verhindert, dass der Container als Root läuft. Images, die Root brauchen, müssen sich ausdrücklich abmelden. |
| Update-Richtlinie | manuell | Ob klickops ein neues Image-Tag ausrollt, sobald die Registry es veröffentlicht. |
Grenzen und Fallstricke
- Ein Rollout ist nicht sofort da. klickops wartet, bis die neuen Replicas ihren Health-Check bestehen, und zieht erst dann die alten ab. Ein kaputtes Image lässt also die vorherige Version weiterlaufen.
- Auf null skalieren behält den Speicher. Die App kostet keine Rechenzeit mehr, der Speicher läuft weiter.
- Die Shell ist kein Deployment-Weg. Was du im laufenden Container änderst, ist beim nächsten Rollout weg. Leg es ins Image oder in die Konfiguration.
- Änderungen an der Konfiguration starten die App neu. Das Speicherband nennt die Zahl der betroffenen Replicas, bevor du bestätigst.
Wer eine App löscht, löscht ihre Volumes mit, sofern er sie vorher nicht löst. Der Dialog listet genau auf, was mitgeht.
Verwandt
- Domains gibt der App einen Hostnamen und ein Zertifikat.
- Datenbanken legt ihre Zugangsdaten direkt in die App.
- Speicher, der einen Rollout übersteht, liegt auf einem Volume und wird im Tab Storage eingebunden.