Utilizzo Discourse da diversi anni. Ogni 6 mesi imposto una nuova istanza. La mia configurazione include Docker e un proxy basato su Nginx, quindi è forse leggermente non standard. Per questo motivo non utilizzo discourse-setup.
Ogni 6 mesi, quando ripeto questo processo, dopo aver clonato una copia fresca di Discourse dal suo git ed eseguito ./launcher bootstrap app, il container non si avvia. Il log mostra:
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.
Di solito eseguo una serie di passaggi per riavviare, rimuovere plugin, riaggiungerli, ecc., finché non funziona, senza mai capire cosa alla fine lo abbia fatto funzionare. 6 mesi dopo, succede la stessa cosa. Lavoro solo per risolverlo, e non è chiaro quale dei molti passaggi che eseguo alla fine lo abbia fatto funzionare.
Questa volta, però, credo di aver finalmente trovato il problema, ed è questo: apparentemente, ./launcher start app riavvia vecchie istanze del container chiamate app, anche quando Discourse è stato clonato e riavviato.
Il passaggio mancante è docker remove app. In sintesi:
./launcher stop app
docker remove app
... ora la clonazione, il riavvio e `launcher start app` funzionano
Il mio errore è stato aspettarmi che dopo aver eseguito ./launcher bootstrap app, il successivo ./launcher start app avviasse la nuova immagine del container, ma non sembra essere così. Naturalmente, le cose vanno a rotoli con la vecchia poiché il percorso /var/discourse/shared è stato reinizializzato.
Lascio questo qui nel caso in cui altri cerchino gli stessi messaggi di errore nel log.
Come possibile miglioramento, sarebbe bello se il container rilevasse che la sua directory /var/discourse/shared è cambiata.