После обновления до PostgreSQL 18 Discourse продолжил использовать бинарные файлы PostgreSQL 15

Я запускаю Discourse в отдельном Docker-контейнере в директории /var/discourse.

Я попытался обновить встроенную базу данных PostgreSQL с версии 15 до 18. Обновление, казалось, завершилось успешно, и в активной директории данных теперь отображается:

/shared/postgres_data/PG_VERSION
18

Однако в пересобранном контейнере Discourse по-прежнему присутствуют только бинарные файлы PostgreSQL 15:

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

Служба PostgreSQL настроена на запуск:

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

тогда как фактическая директория данных Discourse смонтирована в:

/shared/postgres_data

В результате PostgreSQL завершается с ошибкой:

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

Мне известно, что в последних Docker-образах Discourse должны содержаться бинарные файлы PostgreSQL 18. Я изменил app.yml, чтобы использовать шаблон PostgreSQL 18, и пересобрал приложение, но в полученном контейнере по-прежнему находятся бинарные файлы PostgreSQL 15, а скрипт службы все еще указывает на /etc/postgresql/15/main.

Соответствующая часть моей текущей конфигурации службы:

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

Мои вопросы:

  1. Каков правильный способ пересобрать или обновить контейнер Discourse, чтобы в нем действительно содержались бинарные файлы PostgreSQL 18?

  2. Существует ли определенный шаблон или тег образа, который следует использовать в app.yml?

  3. Как только PostgreSQL 18 станет доступен, какова поддерживаемая процедура его запуска против существующей директории /shared/postgres_data?

Я не удалял и не переинициализировал директории данных PostgreSQL 18. Я предпочел бы восстановить обновленный кластер, а не восстанавливать старые данные PostgreSQL 15.

1 лайк

Пост был объединён с существующей темой: Обновление PostgreSQL 18 для self-hosters