Leider bringt der einfache Aufruf von
./launcher start app
das Forum nicht wieder zum Laufen.
Ich habe weitere Experimente durchgeführt. Insbesondere habe ich versucht, den fehlschlagenden Yarn-Befehl manuell im Docker-Image auszuführen:
./launcher enter app
cd /var/www/discourse
su discourse
yarn install --frozen-lockfile
... schlägt mit demselben Timeout fehl ...
yarn config set network-timeout 600000 -g
yarn install --frozen-lockfile
... erfolgreich ...
Dies bestätigt, dass die Erhöhung des Timeouts das Problem behebt.
Die verbleibende Frage ist also, wie man den Timeout auch während ./launcher rebuild app erhöhen kann.
Die Datei web.template.yml befindet sich tatsächlich in discourse/containers außerhalb des Docker-Images. Ich habe sie zunächst nicht gefunden, da sich meine Discourse-Installation an einem nicht standardmäßigen Ort befindet und nicht in /var/discourse.
Die im oben genannten Beitrag erwähnte Korrektur bezieht sich auf Zeile 159, aber das scheint nicht mehr korrekt zu sein, wahrscheinlich aufgrund von Updates. Es gibt jedoch diese Zeilen um Zeile 188:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
Der Beitrag schlägt vor, einen neuen Abschnitt einzufügen, um den Timeout festzulegen, gibt aber keine spezifischen Anweisungen, wie dies geschehen soll. Ich bin mit YAML, Pups und Yarn nicht sehr vertraut oder wie diese in Discourse verwendet werden, daher wollte ich nicht raten. Stattdessen habe ich diese Änderung am ursprünglichen Abschnitt versucht:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'
Der Befehl ./launcher rebuild app dauert nun sehr lange (über zwei Stunden!, viel länger als früher). Die gute Nachricht ist, dass das Forum wieder online ist! Großartig, danke für die Hilfe.
Gibt es eine Möglichkeit, den Timeout zu erhöhen, indem ein Befehl zu containers/app.yml hinzugefügt wird? Das wäre praktisch, da so alle meine Anpassungen in einer einzigen Datei zusammengefasst wären.
Die Verwendung eines 2-Container-Setups klingt nach einer großartigen Idee; ich war mir nicht bewusst, dass dies möglich ist. Ich nehme an, Sie beziehen sich auf dies: Move from standalone container to separate web and data containers; ich werde es ausprobieren. Zusätzliche Ratschläge sind willkommen.
Wenn ich ein Update meiner Discourse-Instanz über den Browser durchführe, wird dann auch ./launcher rebuild app ausgeführt? Wird das Forum dabei vorübergehend offline genommen? Bisher hatte ich den Eindruck, dass das Forum während des größten Teils des Prozesses online bleibt, aber ich bin mir nicht sicher. Diese Dinge waren mir nie klar, und ich hatte nie die Zeit, sie wirklich herauszufinden. Antworten oder Hinweise auf weitere Informationen sind willkommen.