Ich benutze Discourse nun schon seit mehreren Jahren. Ich richte alle 6 Monate eine neue Instanz ein. Mein Setup beinhaltet Docker und einen Nginx-basierten Proxy, daher ist es vielleicht etwas nicht standardmäßig. Aus diesem Grund verwende ich discourse-setup nicht.
Alle 6 Monate, wenn ich diesen Prozess wiederhole, nachdem ich eine frische Kopie von Discourse aus seinem Git geklont und ./launcher bootstrap app ausgeführt habe, schlägt der Container fehl. Das Log zeigt:
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.
Ich mache dann normalerweise eine Reihe von Schritten, um neu zu booten, neu zu starten, Plugins zu entfernen, sie wieder hinzuzufügen usw., bis es endlich funktioniert, ohne jemals zu erfahren, was es letztendlich zum Laufen gebracht hat. 6 Monate später passiert wieder dasselbe. Ich arbeite nur daran, es zu beheben, und es ist nicht klar, welcher der vielen Schritte, die ich dann unternehme, es letztendlich zum Laufen gebracht hat.
Dieses Mal glaube ich jedoch, das Problem endlich gefunden zu haben, und es ist dieses: Anscheinend startet ./launcher start app alte Container-Instanzen namens app neu, auch wenn Discourse neu geklont und neu gebootet wurde.
Der fehlende Schritt ist docker remove app. Zusammenfassend:
./launcher stop app
docker remove app
... jetzt neu klonen, neu booten und launcher start app funktioniert
Mein Fehler war zu erwarten, dass nach der Ausführung von ./launcher bootstrap app der nächste ./launcher start app das neue Container-Image starten würde, aber das scheint nicht der Fall zu sein. Natürlich geraten die Dinge mit dem alten Container in Aufruhr, da der Pfad /var/discourse/shared neu initialisiert wurde.
Ich hinterlasse dies hier, falls andere nach denselben Log-Fehlermeldungen suchen.
Als mögliche Verbesserung wäre es schön, wenn der Container erkennen würde, dass sich sein Verzeichnis /var/discourse/shared geändert hat.