J’utilise Discourse depuis plusieurs années maintenant. Je mets en place une nouvelle instance tous les 6 mois. Ma configuration inclut Docker et un proxy basé sur Nginx, donc elle est peut-être un peu non standard. Pour cette raison, je n’utilise pas discourse-setup.
Tous les 6 mois, lorsque je répète ce processus, après avoir recloné une copie fraîche de Discourse depuis son git et exécuté ./launcher bootstrap app, le conteneur ne démarre pas. Le journal indique :
anacron: Can't chdir to /var/spool/anacron: No such file or directory
run-parts: /etc/runit/1.d/anacron exited with return code 1
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
anacron: Can't chdir to /var/spool/anacron: No such file or directory
ad infinitum.
Je fais ensuite un certain nombre d’étapes pour re-bootstrap, redémarrer, supprimer des plugins, les rajouter, etc., jusqu’à ce que cela fonctionne enfin, sans jamais savoir ce qui a finalement fonctionné. 6 mois plus tard, la même chose se reproduit. Je travaille juste pour le corriger, et il n’est pas clair quelle étape parmi les nombreuses que je prends a finalement fonctionné.
Cette fois, cependant, je pense avoir enfin trouvé le problème, et c’est ceci : apparemment, ./launcher start app redémarre d’anciennes instances de conteneurs appelées app, même lorsque Discourse a été recloné et re-bootstrapé.
L’étape manquante est docker remove app. En résumé :
./launcher stop app
docker remove app
... maintenant recloner, rebootstrap et launcher start app fonctionne
Mon erreur a été de m’attendre à ce qu’après avoir exécuté ./launcher bootstrap app, le prochain ./launcher start app démarre la nouvelle image de conteneur, mais ce ne semble pas être le cas. Naturellement, les choses tournent mal avec l’ancienne, car le chemin /var/discourse/shared a été réinitialisé.
Je laisse cela ici au cas où d’autres rechercheraient les mêmes messages d’erreur de journal.
En tant qu’amélioration possible, il serait bien que le conteneur détecte que son répertoire /var/discourse/shared a changé.