Старый Postgres в образе Docker с двумя контейнерами: web и data

Всем привет,

Я застрял при попытке обновить экземпляр Discourse в Docker. При попытке пересобрать, инициализировать или любым другим способом настроить контейнер я получаю следующую ошибку:

I, [2020-11-18T15:23:37.357104 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake plugin:pull_compatible_all'
I, [2020-11-18T15:23:40.298932 #1]  INFO -- : discourse-slack-official уже находится в последней совместимой версии
docker_manager уже находится в последней совместимой версии

I, [2020-11-18T15:23:40.299193 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: Произошла ошибка, все последующие миграции отменены:

PG::SyntaxError: ОШИБКА: синтаксическая ошибка вблизи "NOT"
LINE 2: ADD COLUMN IF NOT EXISTS image_upload_id bigint
                      ^

По результатам расследования выяснилось, что для последней версии Discourse требуется PostgreSQL 12, но в настоящее время он не включён в официальный Docker-образ.

Кажется, в репозитории есть ветка разработки для сборки контейнера с PostgreSQL 12, но никаких активных pull-запросов или чего-либо подобного нет…

Как мне исправить или обновить мою установку Discourse? Путь обновления указан неверно, и теперь я борюсь за то, чтобы как можно скорее вернуть форумы в рабочее состояние!

Дополнительное примечание: ветка pg12 также не работает (хотя, похоже, пытается загрузить другую версию контейнера), но при выполнении db:migrate возникает та же ошибка…

Это не так. Базовый образ для Discourse уже несколько месяцев включает PostgreSQL, начиная с обновления до PostgreSQL 12.

Можете поделиться вашим файлом app.yml? Возможно, вы случайно указали в нём старый базовый образ и забыли об этом?

Как давно у вас обновлён репозиторий discourse_docker? Я знаю, что скрипт launcher должен обновляться автоматически, но, возможно, стоит вручную выполнить git pull для уверенности.

Последний базовый образ должен быть:

image="discourse/base:2.0.20201004-2310"

Что вы получите, если выполните:

docker images | grep discourse/base

Кроме того, этот плагин устарел 3 года назад :scream:

Странно, я на последнем коммите:

$ git branch -v
* master 4a4b0f8 DOCS: исправлена синтаксическая ошибка в readme

И, кажется, у меня самое свежее изображение:

$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
discourse/base         2.0.20201004-2310   b64c37d7ab06        6 недель назад      2.4GB
local_discourse/data   latest              253fd4d68068        3 года назад        1.7GB

Я точно удалил старые образы Docker и несколько раз пытался пересобрать приложение web.

Ах, мне нужно сначала пересобрать контейнер data или что-то в этом роде? Я его ещё не трогал.

Также этот плагин устарел 3 года назад :scream:

:see_no_evil: это следующее в моем списке для обновления, но я застрял на текущем обновлении!

О, вы используете расширенную настройку данных?

Вам нужно остановить веб-сервер и пересобрать данные, чтобы обновить всё программное обеспечение данных. Для этого есть раздел на PostgreSQL 12 update

Спасибо за помощь, сейчас пересобираем контейнер data

Кажется, всё сработало, ещё раз спасибо всем!

Такие «ожоги» вполне ожидаемы при переходе на установку Discourse и первой попытке её обновления :sweat_smile: