Ich betreibe Discourse in einem eigenständigen Docker-Container unter /var/discourse.
Ich habe versucht, die eingebettete PostgreSQL-Datenbank von Version 15 auf 18 zu aktualisieren. Das Upgrade schien abgeschlossen zu sein, und das aktive Verzeichnis für die Daten meldet nun:
/shared/postgres_data/PG_VERSION
18
Der neu aufgebaute Discourse-Container enthält jedoch weiterhin nur die PostgreSQL-15-Binaries:
/usr/lib/postgresql/15/bin/postgres
postgres (PostgreSQL) 15.18
Der PostgreSQL-Dienst ist so konfiguriert, dass er ausgeführt wird:
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
während das tatsächliche Discourse-Datenverzeichnis unter folgendem Pfad eingebunden ist:
/shared/postgres_data
Infolgedessen schlägt PostgreSQL mit folgender Meldung fehl:
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 18,
which is not compatible with this version 15.18
(Debian 15.18-1.pgdg12+1).
Mir ist bekannt, dass aktuelle Discourse-Docker-Images die PostgreSQL-18-Binaries enthalten sollen. Ich habe app.yml so geändert, dass die PostgreSQL-18-Vorlage verwendet wird, und die App neu aufgebaut, aber der resultierende Container enthält weiterhin die PostgreSQL-15-Binaries, und das Skript für den Dienst verweist immer noch auf /etc/postgresql/15/main.
Der relevante Abschnitt meiner aktuellen Dienstkonfiguration lautet:
HOME=/var/lib/postgresql USER=postgres exec thpoff \
chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert \
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
Meine Fragen lauten:
-
Was ist der korrekte Weg, den Discourse-Container neu aufzubauen oder zu aktualisieren, damit er tatsächlich die PostgreSQL-18-Binaries enthält?
-
Gibt es eine bestimmte Vorlage oder ein bestimmtes Image-Tag, das in
app.ymlverwendet werden sollte? -
Sobald PostgreSQL 18 verfügbar ist, welches unterstützte Verfahren gibt es, es gegen das vorhandene Verzeichnis
/shared/postgres_datazu starten?
Ich habe das PostgreSQL-18-Datenverzeichnis weder gelöscht noch neu initialisiert. Ich würde den aktualisierten Cluster wiederherstellen, anstatt die alten PostgreSQL-15-Daten wiederherzustellen.