La mise à niveau vers PostgreSQL 18 a laissé Discourse utiliser les binaires de PostgreSQL 15

Je fais tourner Discourse dans un conteneur Docker autonome sur /var/discourse.

J’ai tenté de mettre à jour la base de données PostgreSQL intégrée de la version 15 à la version 18. La mise à jour semble s’être terminée, et le répertoire de données actif indique désormais :

/shared/postgres_data/PG_VERSION
18

Cependant, le conteneur Discourse reconstruit ne contient toujours que les binaires PostgreSQL 15 :

/usr/lib/postgresql/15/bin/postgres
postgres (PostgreSQL) 15.18

Le service PostgreSQL est configuré pour exécuter :

/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main

alors que le répertoire de données Discourse réel est monté sur :

/shared/postgres_data

PostgreSQL échoue donc avec :

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).

Je comprends que les images Docker Discourse récentes sont censées inclure les binaires PostgreSQL 18. J’ai modifié app.yml pour utiliser le modèle PostgreSQL 18 et reconstruit l’application, mais le conteneur résultant contient toujours les binaires PostgreSQL 15 et le script de service pointe toujours vers /etc/postgresql/15/main.

La partie pertinente de ma configuration de service actuelle est :

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

Mes questions sont les suivantes :

  1. Quelle est la bonne méthode pour reconstruire ou mettre à jour le conteneur Discourse afin qu’il contienne réellement les binaires PostgreSQL 18 ?

  2. Existe-t-il un modèle ou une étiquette d’image spécifique à utiliser dans app.yml ?

  3. Une fois PostgreSQL 18 disponible, quelle est la procédure prise en charge pour le démarrer en utilisant le répertoire /shared/postgres_data existant ?

Je n’ai pas supprimé ni réinitialisé le répertoire de données PostgreSQL 18. Je préfère récupérer le cluster mis à jour plutôt que de restaurer les anciennes données PostgreSQL 15.

1 « J'aime »

Un message a été fusionné dans un sujet existant : Mise à jour de PostgreSQL 18 pour les auto-hébergeurs