So sammeln Sie alle von Discourse verwendeten statischen Assets (js, css)

Das ist eine gute Frage, aber ich habe keine gute Antwort dafür.

Das im Container verwendete Konfigurationssystem ist:

Das README dort beschreibt allgemein, wie Hooks funktionieren. Die spezifisch verfügbaren Hooks hängen davon ab, wie Ihre Instanz eingerichtet ist – die Hauptdatei app.yml enthält eine oder mehrere Vorlagen. In den meisten Fällen ist eine davon web.template.yml:

Dort ist der Hook assets_precompile definiert (zum Zeitpunkt dieses Schreibens auf Zeile 159). Gemäß der Pups-Dokumentation können Sie mit before_assets_precompile bzw. after_assets_precompile andere Befehle vor oder nach dem Abschluss ausführen.

Die Befehle werden innerhalb des Docker-Containers ausgeführt, sodass Sie dafür nichts weiter tun müssen.

Die Direktive cd: kann direkt auf /var/www/discourse/public/assets/ zeigen, und jede Zeile in cmd wird aus diesem Verzeichnis ausgeführt. (Warnung: Jede Zeile in einem cmd-Array wird in einer separaten Shell ausgeführt, ähnlich wie in einer Makefile).

Ich bin mir nicht sicher, ob der Inhalt von /var/www/discourse/public/assets/ zwischen den Builds erhalten bleibt. Möglicherweise müssen Sie daher jedes Mal ein lokales Git-Repository erstellen und einen Force-Push durchführen. Die „korrektere“ Lösung könnte darin bestehen, in app.yml ein Docker-Volume für das Assets-Verzeichnis zu definieren, das auf einem in app.yml definierten Docker-Volume basiert wie die anderen und außerhalb des Containers persistent bleibt.