Ok, hier ist, wie wir es behoben haben (nichts für schwache Nerven)
- Ubuntu auf eine Version upgraden, die Docker 20+ unterstützt
Wir waren auf Ubuntu 16, ich musste mindestens auf Ubuntu 20 kommen, also haben wir dieses Upgrade zweimal durchgeführt
RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
- Sobald wir auf Ubuntu 20 waren, mussten wir Docker aktualisieren, was Ubuntu von sich aus nicht tun wollte.
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Das Repository zu Apt-Quellen hinzufügen:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release & echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- Das brachte uns zu Docker 28
- Dann ausführen
./launcher rebuild app
- Dies wird Ihr PostgreSQL von 13 auf 15 upgraden, siehe:
PostgreSQL 15 update
- Sobald die Datenbank erfolgreich aktualisiert wurde, wurde Folgendes ausgeführt:
./launcher rebuild app
- Dies ergab einen Fehler bezüglich einer fehlenden Spalte
2025-05-18 14:58:28.208 UTC [1455] discourse@discourse ERROR: column "require_message" does not exist at character 72
2025-05-18 14:58:28.208 UTC [1455] discourse@discourse STATEMENT: SELECT id, name, name_key, description, notify_type, auto_action_type, require_message, applies_to, position, enabled, score_type FROM "flags" ORDER BY "flags"."position" ASC
** PLUGIN FAILURE **
Sie können Discourse aufgrund dieses Fehlers bei der Plugin-Initialisierung nicht starten:
PG::UndefinedColumn: ERROR: column "require_message" does not exist
LINE 1: ..._key, description, notify_type, auto_action_type, require_me...
^
- An diesem Punkt gibt es keine Möglichkeit, den Container zu starten. Also ging ich zu app.yml, deaktivierte alle Plugins und führte erneut einen Rebuild durch.
- Die App wurde schließlich neu erstellt, dann konnte ich die Rails-Konsole aufrufen, um die obige Spalte manuell hinzuzufügen.
./launcher enter app
rails db
ActiveRecord::Base.connection.execute("ALTER TABLE flags ADD COLUMN require_message BOOLEAN DEFAULT FALSE;")
exit
exit
- Sobald die Spalte vorhanden war, ging ich zurück zu app.yml, aktivierte alle Plugins und führte erneut einen Rebuild durch.
- Der Rebuild war erfolgreich… und wir sind online!
Vielen Dank an @pfaffman für Ihre prompte Antwort, sogar am Wochenende. Wir werden einen neuen, aktualisierten Droplet erstellen und dorthin umziehen. Dies sollte ein schneller In-Place-Upgrade über die Weboberfläche sein. Aber ich schätze, das Skript prüft nicht die Docker-Kompatibilität. Als es Docker für Discourse aktualisierte, gab es einen Fehler wegen inkompatiblen Docker-Versionen.
Das war vollständig unsere Schuld, da wir auf einer so alten Version von Ubuntu 16 waren. Eines der guten und schlechten Dinge an einem stabilen System ist, dass es dazu neigt, zu verharren.