1. Wykonaj kopię zapasową bazy danych
- SQLite (wolumen Docker)
- SQLite (binarka)
- PostgreSQL
- MongoDB
Zatrzymaj gateway, aby plik nie był zapisywany w trakcie kopiowania, a następnie zarchiwizuj
wolumen:Zastąp
gomodel_data nazwą swojego wolumenu (docker volume ls). Jeśli
zamiast tego montujesz katalog hosta (bind mount), wystarczy cp -a ./data ./data.bak-$(date +%F).2. Zaktualizuj
Docker Compose
storage configured ze ścieżką do Twojej bazy danych.
docker run
Odtworzenie kontenera usuwa jego flagi, więc najpierw odczytaj je z działającego kontenera:/app/data nic nie jest zamontowane, baza danych znajduje się w systemie plików
kontenera i docker rm ją usunie. Skopiuj ją na zewnątrz i zainicjuj nią wolumen, który
zamierzasz zamontować, dopóki stary kontener jeszcze istnieje — pusty wolumen zasłania
kopię, a gateway startuje bez kluczy, użycia i logów:
65532 to UID użytkownika nonroot w obrazie — gateway nie może zapisywać na wolumenie należącym
do kogokolwiek innego.
Następnie zastąp kontener, przekazując ponownie te same flagi montowania i zmiennych środowiskowych:
Binarka
Uruchom ponownie instalator. Pobiera on najnowszy release i podmienia binarkę w miejscu:- macOS / Linux
- Windows
3. Sprawdź
GET /version zwraca działającą wersję, najnowszy opublikowany release oraz
informację, czy dostępna jest aktualizacja:
Co robią migracje
Migracje uruchamiają się przy pierwszym starcie nowej wersji. Nie ma osobnego polecenia migracji, a aktualizacja nigdy nie przenosi ani nie usuwa Twojej bazy danych, konfiguracji ani cache’u. Większość z nich ma charakter addytywny: brakujące tabele, indeksy i kolumny są tworzone, a częściowo zastosowany schemat można bezpiecznie ponowić przy następnym starcie. Niektóre wydania zamiast tego przekształcają storage — gdy budżety i limity żądań zyskały zakresy, ich tabele zostały przebudowane, a stare usunięte. Oba rodzaje są bezpieczne przy aktualizacji w przód, i właśnie dlatego kierunek odwrotny wymaga ostrożności.Przypinanie wersji
Aktualizacje domyślnie instalują najnowszy release. Aby pozostać przy znanej wersji, przypnij ją:- Docker
- macOS / Linux
- Windows
latest.X.Y.Z
opublikowanym releasem.
Wycofywanie aktualizacji
Zainstaluj lub pobierz poprzednią wersję i zrestartuj gateway. To wystarczy tylko wtedy, gdy każda migracja pomiędzy wersjami była addytywna; po migracji przekształcającej starsza binarka szuka storage, które aktualizacja przebudowała. Z zewnątrz nie da się tych dwóch przypadków odróżnić, więc przywróć kopię zapasową z kroku 1, chyba że wiadomo, że starsza wersja uruchamia się na zmigrowanej bazie danych. Przywrócenie kopii zapasowej wolumenu SQLite zastępuje zawartość wolumenu, więc najpierw zatrzymaj gateway —docker compose stop gomodel albo docker stop gomodel w przypadku
samodzielnego kontenera — a następnie rozpakuj archiwum i uruchom go ponownie:
Gdy coś pójdzie nie tak
Nadal masz problem? Zapytaj na Discordzie lub otwórz
zgłoszenie na GitHubie.