Ancien Postgres sur une image Docker avec deux conteneurs : web et data

Bonjour à tous,

Je suis bloqué lors de la mise à niveau d’une instance Discourse Docker. Je rencontre l’erreur suivante lorsque j’essaie de reconstruire, d’amorcer ou de configurer le conteneur de toute autre manière :

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 est déjà à la dernière version compatible
docker_manager est déjà à la dernière version compatible

I, [2020-11-18T15:23:40.299193 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted !
StandardError : Une erreur s'est produite, toutes les migrations ultérieures ont été annulées :

PG::SyntaxError : ERREUR : erreur de syntaxe près de « NOT »
LINE 2: ADD COLUMN IF NOT EXISTS image_upload_id bigint
                      ^

Après investigation, il semble que PostgreSQL 12 soit requis pour la dernière version de Discourse, mais cela n’est actuellement pas inclus dans l’image Docker officielle.

Il semble qu’il existe une branche de développement dans le dépôt pour construire le conteneur avec PostgreSQL 12, mais aucune PR en cours ou autre…

Comment puis-je procéder pour corriger ou mettre à jour mon installation Discourse ? Le chemin de mise à jour est incorrect et je me bats maintenant pour remettre les forums en ligne dès que possible !

2 « J'aime »

Note supplémentaire : la branche pg12 ne fonctionne pas non plus (même si elle semble tenter de télécharger une version différente du conteneur), je rencontre toujours la même erreur lors de db:migrate…

Ce n’est pas le cas. L’image de base pour Discourse inclut PostgreSQL depuis plusieurs mois déjà, depuis la mise à jour vers PostgreSQL 12.

Pourriez-vous partager votre fichier app.yml ? Peut-être avez-vous forcé une ancienne image de base dans celui-ci et l’avez-vous oublié ?

2 « J'aime »

Quelle est l’ancienneté de votre checkout discourse_docker ? Je sais que le script launcher est censé se mettre à jour automatiquement, mais il pourrait être utile d’exécuter git pull manuellement pour en être sûr.

La dernière image de base devrait être :

image="discourse/base:2.0.20201004-2310"

Qu’obtenez-vous si vous exécutez :

docker images | grep discourse/base

De plus, ce plugin a été abandonné il y a 3 ans :scream:

2 « J'aime »

Étrange, je suis sur le dernier commit :

$ git branch -v
* master 4a4b0f8 DOCS : correction d'une erreur de syntaxe dans le readme

Et il semble que j’aie la dernière image :

$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
discourse/base         2.0.20201004-2310   b64c37d7ab06        6 semaines          2,4 Go
local_discourse/data   latest              253fd4d68068        3 ans               1,7 Go

Je me suis assuré de supprimer les anciennes images Docker et j’ai tenté de reconstruire l’application web à plusieurs reprises.

Ah, dois-je d’abord reconstruire le conteneur data ou autre chose ? Je ne l’ai pas encore touché.

De plus, ce plugin était obsolète il y a 3 ans :scream:

:see_no_evil: C’est le prochain sur ma liste à mettre à jour, mais je suis bloqué avec la mise à jour actuelle !

Oh, vous utilisez la configuration de données avancée ?

Vous devez arrêter le service web et reconstruire les données pour mettre à jour tous les logiciels de données. Il y a une section dédiée à cela sur PostgreSQL 12 update

8 « J'aime »

Merci pour votre aide, reconstruction du conteneur data en cours…

Bon, ça semble avoir fonctionné, merci encore à tous !

C’est le genre de casse-tête à attendre quand on hérite d’une installation Discourse et qu’on effectue une mise à niveau pour la première fois :sweat_smile:

4 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.