1. Die Datenbank sichern
- SQLite (Docker-Volume)
- SQLite (Binary)
- PostgreSQL
- MongoDB
Stoppen Sie das Gateway, damit die Datei nicht während des Kopierens
beschrieben wird, und archivieren Sie dann das Volume:Ersetzen Sie
gomodel_data durch den Namen Ihres Volumes
(docker volume ls). Wenn Sie stattdessen ein Host-Verzeichnis per Bind
Mount einbinden, genügt cp -a ./data ./data.bak-$(date +%F).2. Aktualisieren
Docker Compose
storage configured mit Ihrem Datenbankpfad zeigen.
docker run
Beim Neuanlegen des Containers gehen seine Flags verloren. Lesen Sie sie daher zuerst aus dem laufenden Container aus:/app/data nichts eingebunden, liegt die Datenbank im Dateisystem
des Containers, und docker rm löscht sie. Kopieren Sie sie heraus und
befüllen Sie damit das Volume, das Sie einbinden werden, solange der alte
Container noch existiert – ein leeres Volume verdeckt die Kopie, und das
Gateway startet ohne Keys, Nutzung oder Logs:
65532 ist die Nicht-Root-UID des Images – das Gateway kann kein Volume
beschreiben, das jemand anderem gehört.
Ersetzen Sie dann den Container und übergeben Sie dieselben Mount- und
Umgebungs-Flags erneut:
Binary
Führen Sie das Installationsskript erneut aus. Es lädt das neueste Release und ersetzt das Binary an Ort und Stelle:- macOS / Linux
- Windows
3. Überprüfen
GET /version meldet die laufende Version, das neueste veröffentlichte Release
und ob eine Aktualisierung verfügbar ist:
Was Migrationen bewirken
Migrationen laufen beim ersten Start einer neuen Version. Es gibt keinen separaten Migrationsbefehl, und eine Aktualisierung verschiebt oder löscht nie Ihre Datenbank, Konfiguration oder Ihren Cache. Die meisten sind additiv: Fehlende Tabellen, Indizes und Spalten werden angelegt, und ein teilweise angewendetes Schema kann beim nächsten Start gefahrlos erneut versucht werden. Manche Releases wandeln den Speicher dagegen um – als Budgets und Rate-Limits Scopes erhielten, wurden ihre Tabellen neu aufgebaut und die alten verworfen. Beides ist in Vorwärtsrichtung sicher, weshalb die Rückwärtsrichtung Sorgfalt erfordert.Eine Version festlegen
Aktualisierungen verwenden standardmäßig das neueste Release. Um bei einer bekannten Version zu bleiben, legen Sie diese fest:- Docker
- macOS / Linux
- Windows
latest.X.Y.Z durch ein
veröffentlichtes Release.
Zurückrollen
Installieren oder pullen Sie die vorherige Version und starten Sie neu. Das genügt nur, wenn jede Migration dazwischen additiv war; nach einer umwandelnden Migration sucht das ältere Binary nach Speicherstrukturen, die das Upgrade neu aufgebaut hat. Von außen lassen sich die beiden Fälle nicht unterscheiden. Stellen Sie daher das Backup aus Schritt 1 wieder her, es sei denn, es ist bekannt, dass die ältere Version mit der migrierten Datenbank startet. Die Wiederherstellung eines SQLite-Volume-Backups ersetzt den Inhalt des Volumes. Stoppen Sie daher zuerst das Gateway –docker compose stop gomodel
oder docker stop gomodel für einen eigenständigen Container –, entpacken Sie
dann das Archiv und starten Sie es wieder:
Wenn etwas schiefgeht
Kommen Sie nicht weiter? Fragen Sie auf Discord
oder eröffnen Sie ein GitHub-Issue.