Hallo Leute. Das ist wahrscheinlich eine dumme Frage, aber ich stelle sie trotzdem.
Ich steckte in dieser bekannten Schleife fest:
Upgrade fehlgeschlagen.
Versuche ./launcher rebuild app, aber nicht genug Speicherplatz. (Unter 5 GB frei.)
./launcher cleanup, was anscheinend etwas Speicherplatz freigab. (Über 5 GB frei.)
GEHE ZU 2.
Da ich noch nicht genau weiß, welche Operationen sicher sind (d. h. meine Website-Daten nicht zerstören), habe ich mich nervös durchgehangelt und gehofft, nicht wiederherstellen zu müssen. Ich habe es am Ende so gemacht und es schien für mich zu funktionieren:
./launcher stop app
./launcher cleanup, was deutlich mehr Platz freimachte als zuvor, was mich sofort nervös machte.
git pull
./launcher rebuild app
Dies funktionierte nicht nur, sondern führte zu einer laufenden Website mit intakten Daten und mit etwa 2 GB mehr freiem Speicherplatz als zuvor.
Jetzt bin ich mir nicht sicher, ob das, was ich getan habe, brillant, offensichtlich oder riskant war und einfach nur funktioniert hat. Ich würde gerne besser verstehen, warum ich die Ergebnisse erzielt habe, die ich erzielt habe, und ob das ein sinnvoller Weg zum Upgrade war.
Docker erstellt eine Reihe von Dateien, wenn es einen Container erstellt (einschließlich der Container, die es erstellt), wenn Sie einen neuen Container erstellen, haben Sie immer noch die alten Container (und auch die Disk-Images). Das wird bei einer Bereinigung entfernt.
Es ist etwas sicherer, den Bereinigungsbefehl auszuführen, während Discourse ausgeführt wird, da der Bereinigungsbefehl keinen laufenden Container löscht. Wenn beim Neuerstellen etwas schiefgeht, können Sie den alten Container immer noch neu starten, wenn er existiert.
Daher würde ich Schritt (1) oben entfernen und Schritt (3) ist unnötig, da ./launcher einen Pull durchführt (früher tat es das nicht).
Wenn Ihr Festplattenspeicher also so knapp ist, dass Sie keinen Platz für zwei Images haben, müssen Sie alle zerstören, bevor Sie ein neues erstellen. Das bringt Sie in eine schlechte Lage, wenn Sie aus irgendeinem Grund kein neues Image erstellen können. In diesem Fall benötigen Sie wirklich mehr Festplattenspeicher. Am einfachsten ist es, Backups nach S3 zu verschieben.
Ich bin überrascht von „Speicherplatz ist so knapp“ in meiner Situation. Ich führe eine Bereinigung durch, habe 7,9 GB frei, dann führe ich ./launcher rebuild app aus und es weigert sich, fertig zu werden. Sind 7,9 GB frei, wenn ich die App neu erstellen möchte, wirklich so wenig?!
(UPDATE: Jetzt verstehe ich, wie das passieren kann. Ich lasse das hier für unbeteiligte Dritte, die es bei einer Websuche finden. Bitte lesen Sie diesen gesamten Thread, Leute!)
Für diesen speziellen Neuaufbau mussten Sie ein neues Basis-Image herunterladen
Es wäre besonders hilfreich, diese Information irgendwie in den Upgrade-Prozess einzubeziehen, entweder als Vorabwarnung „Wir müssen ein neues Basis-Image herunterladen, daher benötigen Sie wahrscheinlich 3 GB mehr Speicherplatz als normal für das Upgrade. Wenn Ihnen der Speicherplatz ausgeht, ist das wahrscheinlich der Grund.“ oder als detailliertere Fehlermeldung, wenn der Upgrade-/Neuaufbauprozess den Speicherplatz aufbraucht. Andernfalls geraten wir in eine Endlosschleife von „Da! Da ist all der Speicherplatz, den Sie (scheinbar) brauchen!“ (Picard mit ausgestrecktem Arm.)
Es wäre auch besonders hilfreich, nicht so tief graben zu müssen, um die Option zu finden, ./launcher rebuild app --skip-prereqs zu verwenden, wenn Sie meinen: „Vertrau mir, Kumpel. Ich habe genug Speicherplatz.“ Ja, schreiben Sie Warnungen in fetten, roten 72-Punkt-Schriftzug.
Dieses „neue Basis-Image macht das Upgrade fummelig“-Problem tritt selten genug auf, als dass wir es vergessen würden, verursacht aber Probleme während des Upgrades. Wo ist der geeignete Ort für einen Artikel, der das, was wir über die Umgehung der Probleme wissen, zentralisiert?