Actualización de PostgreSQL 18 para autoalojamiento

Estoy ejecutando Discourse en un contenedor Docker independiente en /var/discourse.

Intenté actualizar la base de datos PostgreSQL integrada de la versión 15 a la 18. La actualización pareció completarse, y el directorio de datos activo ahora informa:

/shared/postgres_data/PG_VERSION
18

Sin embargo, el contenedor de Discourse reconstruido aún contiene solo los binarios de PostgreSQL 15:

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

El servicio de PostgreSQL está configurado para ejecutar:

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

mientras que el directorio de datos real de Discourse está montado en:

/shared/postgres_data

En consecuencia, PostgreSQL falla con:

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

Entiendo que las imágenes Docker recientes de Discourse deberían incluir los binarios de PostgreSQL 18. Cambié app.yml para usar la plantilla de PostgreSQL 18 y reconstruí la aplicación, pero el contenedor resultante aún tiene los binarios de PostgreSQL 15 y el script del servicio aún apunta a /etc/postgresql/15/main.

La parte relevante de mi configuración actual del servicio es:

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

Mis preguntas son:

  1. ¿Cuál es la forma correcta de reconstruir o actualizar el contenedor de Discourse para que realmente contenga los binarios de PostgreSQL 18?

  2. ¿Existe alguna plantilla o etiqueta de imagen específica que deba usarse en app.yml?

  3. Una vez que PostgreSQL 18 esté disponible, ¿cuál es el procedimiento compatible para iniciarlo contra el directorio existente /shared/postgres_data?

No he eliminado ni reinitializado el directorio de datos de PostgreSQL 18. Preferiría recuperar el clúster actualizado en lugar de restaurar los datos antiguos de PostgreSQL 15.

1 me gusta