PostgreSQL 18-Upgrade ließ Discourse weiterhin PostgreSQL 15-Binaries verwenden

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:

  1. Was ist der korrekte Weg, den Discourse-Container neu aufzubauen oder zu aktualisieren, damit er tatsächlich die PostgreSQL-18-Binaries enthält?

  2. Gibt es eine bestimmte Vorlage oder ein bestimmtes Image-Tag, das in app.yml verwendet werden sollte?

  3. Sobald PostgreSQL 18 verfügbar ist, welches unterstützte Verfahren gibt es, es gegen das vorhandene Verzeichnis /shared/postgres_data zu 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.

1 „Gefällt mir“

Ein Beitrag wurde in ein bestehendes Thema zusammengeführt: PostgreSQL 18-Update für Self-Hoster