Eine Aktualisierung zurücknehmen
TypeType kann zu den zuvor laufenden Anwendungs-Images zurückkehren, ohne seine Daten-Volumes zu löschen. Bereiten Sie die Angaben für das Rollback vor jeder Aktualisierung vor; der Tag latest wandert weiter und taugt nicht als Referenz für ein Rollback.
Löschen Sie nie die Volumes
Führen Sie nicht docker compose down -v aus und entfernen Sie nicht die Volumes von PostgreSQL, Garage oder den Geheimnissen. Ein normales docker compose down behält sie.
Vor der Aktualisierung
Öffnen Sie das Stack-Verzeichnis: ~/typetype-stack, sofern Sie kein anderes gewählt haben, oder bei einer manuellen Installation das Verzeichnis mit docker-compose.yml. Siehe Das Verzeichnis wählen.
cd "$STACK_DIR"
mkdir rollback-before-update
cp .env docker-compose.yml rollback-before-update/
for file in docker-compose.arm64.yml docker-compose.override.yml nginx.conf garage.toml; do
[ ! -f "$file" ] || cp -a "$file" rollback-before-update/
done
docker compose exec -T postgres pg_dump -U typetype typetype > rollback-before-update/typetype.sqlDer unterstützte Installer erledigt den Teil mit den Stack-Dateien und den Image-Referenzen vor einer Aktualisierung automatisch. Seine Sicherungen mit Zeitstempel liegen unter .typetype-backups/. Ein Datenbank-Dump bleibt eine eigene Sicherung des Betreibers.
Halten Sie die vier Image-Referenzen fest, die derzeit laufen:
docker image inspect "$(docker compose images -q typetype)" --format '{{index .RepoDigests 0}}'
docker image inspect "$(docker compose images -q typetype-server)" --format '{{index .RepoDigests 0}}'
docker image inspect "$(docker compose images -q typetype-downloader)" --format '{{index .RepoDigests 0}}'
docker image inspect "$(docker compose images -q typetype-token)" --format '{{index .RepoDigests 0}}'Jeder Befehl gibt eine unveränderliche Referenz aus, die auf @sha256:... endet. Bewahren Sie die vier Ausgaben bei der Sicherung auf und beschriften Sie sie mit web, server, downloader und token.
Die vorherige Version der Anwendung wiederherstellen
Stoppen Sie den aktuellen Stack, ohne seine Volumes zu entfernen:
docker compose downStellen Sie die vorherigen Stack-Dateien und die Konfiguration wieder her:
cp rollback-before-update/.env .env
cp rollback-before-update/docker-compose.yml docker-compose.yml
for file in docker-compose.arm64.yml docker-compose.override.yml nginx.conf garage.toml; do
[ ! -f "rollback-before-update/$file" ] || cp -a "rollback-before-update/$file" "$file"
doneÖffnen Sie .env und setzen Sie diese Werte auf die vier Referenzen, die Sie vor der Aktualisierung festgehalten haben:
TYPETYPE_WEB_IMAGE=ghcr.io/typetype-video/typetype@sha256:WEB_DIGEST
TYPETYPE_SERVER_IMAGE=ghcr.io/typetype-video/typetype-server@sha256:SERVER_DIGEST
TYPETYPE_DOWNLOADER_IMAGE=ghcr.io/typetype-video/typetype-downloader@sha256:DOWNLOADER_DIGEST
TYPETYPE_TOKEN_IMAGE=ghcr.io/typetype-video/typetype-token@sha256:TOKEN_DIGESTVerwenden Sie die vollständigen Werte, die Docker ausgegeben hat, nicht die Beispielplatzhalter. Prüfen Sie dann die wiederhergestellte Konfiguration und erstellen Sie den Stack neu:
docker compose config -q
docker compose pull
docker compose up -d --force-recreate --wait --wait-timeout 180
docker compose ps
curl -fsS http://localhost:8080/health
curl -fsS http://localhost:8081/health
curl -fsS http://localhost:8082/api/downloader/health/deepDas ändert nur die Version der Anwendung. Konten, Verlauf, Einstellungen, Downloads, die Garage-Konfiguration und die Geheimnisse bleiben in den vorhandenen Volumes.
Die Datenbank nur wiederherstellen, wenn es nötig ist
Stellen Sie die Datenbank nicht allein deshalb wieder her, weil die Anwendung zurückgenommen wurde. Die meisten Rollbacks der Anwendung funktionieren mit den vorhandenen Daten. Stellen Sie die Sicherung nur wieder her, wenn die Versionshinweise es verlangen oder der vorherige Server mit dem aktuellen Schema nicht starten kann.
Stoppen Sie zuerst die Dienste, die sich mit PostgreSQL verbinden:
docker compose stop typetype typetype-server typetype-downloader postgres-init
docker compose exec -T postgres dropdb -U typetype --if-exists typetype
docker compose exec -T postgres createdb -U typetype typetype
docker compose exec -T postgres psql -U typetype typetype < rollback-before-update/typetype.sql
docker compose up -d --wait --wait-timeout 180Das setzt die Datenbank auf ihren Zustand vor der Aktualisierung zurück; Änderungen nach der Sicherung gehen also verloren.
Zu normalen Aktualisierungen zurückkehren
Nachdem die fehlerhafte Version ersetzt wurde, entfernen Sie die vier Werte TYPETYPE_*_IMAGE aus .env oder lassen Sie sie leer. Die nächste normale Aktualisierung folgt dann wieder den stabilen latest-Images. Siehe Wartung.