Sto eseguendo Discourse in un contenitore Docker standalone su /var/discourse.
Ho tentato di aggiornare il database PostgreSQL integrato dalla versione 15 alla 18. L’aggiornamento sembrava completato e la directory dati attiva ora riporta:
/shared/postgres_data/PG_VERSION
18
Tuttavia, il contenitore Discourse ricostruito contiene ancora solo i binari di PostgreSQL 15:
/usr/lib/postgresql/15/bin/postgres
postgres (PostgreSQL) 15.18
Il servizio PostgreSQL è configurato per eseguire:
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
mentre la directory dati effettiva di Discourse è montata su:
/shared/postgres_data
Di conseguenza, PostgreSQL fallisce con l’errore:
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).
Comprendo che le immagini Docker recenti di Discourse dovrebbero includere i binari di PostgreSQL 18. Ho modificato app.yml per utilizzare il modello di PostgreSQL 18 e ho ricostruito l’app, ma il contenitore risultante ha ancora i binari di PostgreSQL 15 e lo script del servizio punta ancora a /etc/postgresql/15/main.
La parte rilevante della mia attuale configurazione del servizio è:
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
Le mie domande sono:
-
Qual è il modo corretto per ricostruire o aggiornare il contenitore Discourse affinché contenga effettivamente i binari di PostgreSQL 18?
-
Esiste un modello o un tag di immagine specifico che dovrebbe essere utilizzato in
app.yml? -
Una volta disponibile PostgreSQL 18, qual è la procedura supportata per avviarla contro la directory
/shared/postgres_dataesistente?
Non ho eliminato né reinizializzato la directory dati di PostgreSQL 18. Preferisco recuperare il cluster aggiornato piuttosto che ripristinare i vecchi dati di PostgreSQL 15.