PostgreSQL 18-Update für Self-Hoster

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 Datenverzeichnis 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 eigentliche Discourse-Datenverzeichnis eingehängt ist unter:

/shared/postgres_data

PostgreSQL schlägt folglich mit folgendem Fehler 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).

Ich verstehe, dass aktuelle Discourse-Docker-Images die PostgreSQL-18-Binaries enthalten sollen. Ich habe app.yml geändert, um die PostgreSQL-18-Vorlage zu verwenden, und die App neu aufgebaut, aber der resultierende Container hat weiterhin die PostgreSQL-15-Binaries und das Skript des Dienstes verweist immer noch auf /etc/postgresql/15/main.

Der relevante Teil 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 so neu aufzubauen oder zu aktualisieren, dass er tatsächlich die PostgreSQL-18-Binaries enthält?

  2. Gibt es eine bestimmte Vorlage oder einen bestimmten Image-Tag, der in app.yml verwendet werden sollte?

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