Der Befehl im Ordner /var/discourse ist nicht selbsterklärend

Ich musste die Konfiguration ein paar Mal ändern und neu laden, um den Mail-Dienst von Siteground zu troubleshooten. Es gibt zahlreiche Ratschläge, wie man das am schnellsten macht.
Eine Zusammenfassung aller dieser Tipps führt jedoch eher zu Verwirrung.
Könntest du mir daher die Unterschiede zwischen den unten aufgeführten Befehlen genauer erklären?

Die Informationen im Installationsleitfaden und in den Beiträgen dieses Forums sind teilweise inkonsistent. Es ist nicht vollständig klar, was beispielsweise der Unterschied zwischen dem Initialisieren und dem Erstellen eines Containers ist.
Es sollte eine Eskalationsleiter geben, die angibt, welche Aktion welchen Befehl erfordert, wenn man z. B. die app.yml ändert. Manche sagen, start reicht aus, andere behaupten, man müsse rebuild ausführen oder zusätzlich ./discourse-setup nutzen.

Befehle:
    start:      Einen Container starten/initialisieren
    stop:       Einen laufenden Container stoppen
    restart:    Einen Container neu starten
    destroy:    Einen Container stoppen und entfernen
    bootstrap:  Einen Container basierend auf einer Vorlage für die Konfiguration initialisieren
    rebuild:    Einen Container neu erstellen (alten zerstören, bootstrap, neuen starten)

Ich sammle langsam den Eindruck, dass alle Befehle eine aufeinanderfolgende Abfolge von Aktionen darstellen.
Jeder nachfolgende Schritt/Befehl führt dasselbe aus wie sein Vorgänger, plus zusätzliche Schritte.

Zum Beispiel so etwas wie:

  1. Starten

    1. bootstrap: Alten zerstören + Einen Container basierend auf einer Vorlage für die Konfiguration initialisieren
    2. rebuild: bootstrap + Einen Container neu erstellen (neuen starten), d. h. es werden Dinge wie das Herunterladen der neuesten Softwareversionen und das Anwenden aktualisierter Konfigurationen durchgeführt
    3. start: Initialisieren, was auch immer das bedeutet
  2. Stoppen

    1. stop: Einen laufenden Container stoppen
    2. restart: Einen Container neu starten (inkl. Stoppen)
    3. destroy: Einen Container stoppen und entfernen

Ich bin mir nicht sicher, ob ich euch hier richtig verstehe… könntest du bitte einen PR mit deinem vorgeschlagenen Änderung erstellen?

Ich werde einen PR auf GitHub erstellen, muss aber jeden Befehl im Detail verstehen, was aktuell nicht der Fall ist.

Könntest du mir sagen, was jeder Befehl auslöst? Ich habe dazu viele Beiträge gelesen, aber die Informationen sind nicht konsistent.
Ein gutes Beispiel ist start. Mal wird gesagt, dass es nur verwendet wird, um den Container zu stoppen und zu starten, wenn man beispielsweise etwas auf dem Host macht. In einem anderen Thema wird erwähnt, dass es einen Container initialisiert, was auch immer das bedeutet :confused:

Initialisieren bedeutet, dass, falls kein Container existiert, einer erstellt wird. Wenn Sie einen Container stoppen und wieder starten, wird derselbe Container mit denselben Parametern (wie SMTP und anderen Umgebungs-Einstellungen) gestoppt und gestartet. Wenn Sie jedoch zuerst zerstören, wird ein neuer Container mit neuen Umgebungs-Einstellungen erstellt oder initialisiert.

Was ist der Unterschied zwischen „bootstrap

Bootstrap erstellt ein neues Docker-Image, das erforderlich ist, um einen laufenden Container zu „initialisieren".

Ein Rebuild funktioniert immer. Manchmal ist er unnötig, da ein Zerstören und Neustarten ausreicht, damit Umgebungs-Einstellungen (wie SMTP) wirksam werden. Viele Nutzer werden diese Feinheiten jedoch nicht wirklich verstehen, daher ist es besser, ihnen einfach zu sagen, dass sie immer einen Rebuild durchführen sollen, da dies immer funktioniert.

so ./discourse-setup ist der am wenigsten invasive Befehl, da er nur die Discourse-Software neu erstellt.

  1. Bootstrap von Grund auf neu, beginnt mit dem Docker-Image
  2. start, von Grund auf neu, erstellt einen Container
  3. ./discourse-setup, führt das Discourse-Setup aus

Welcher Befehl steht zur Verfügung, um die Konfiguration erneut anzuwenden, wie

  1. in app.yml definiert?
  2. in app.yml referenziert?

Unter der Annahme, dass app.yml die Quelle für alles ist, liest ./discourse-setup nur diese Datei, um seine Arbeit zu verrichten.

Wenn Sie genau wissen möchten, was jeder Befehl bewirkt, können Sie dies hier nachlesen: discourse_docker/launcher at master · discourse/discourse_docker · GitHub

Danke, das hilft :slight_smile:
Es gibt eine einmal erwähnte Einrichtung. Bezieht sich das auf ./discourse-setup?

Dies ist jetzt etwas vollständiger:

Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Befehle:
    start:       Container starten/initialisieren
    stop:        Einen laufenden Container stoppen
    restart:     Container neu starten
    destroy:     Container stoppen und entfernen
    enter:       Eine Shell öffnen, um Befehle innerhalb des Containers auszuführen
    logs:        Docker-Logs für einen Container anzeigen
    bootstrap:   Einen Container für die Konfiguration basierend auf einer Vorlage erstellen
    run:         Führt den angegebenen Befehl mit der Konfiguration im Kontext des zuletzt erstellten Images aus
    rebuild:     Container neu erstellen (alten entfernen, neu erstellen, neuen starten)
    cleanup:     Alle Container entfernen, die länger als 24 Stunden gestoppt waren
    start-cmd:   Generiert den Docker-Befehl zum Starten des Containers

Optionen:
    --skip-prereqs             Launcher-Voraussetzungen nicht prüfen
    --docker-args              Zusätzliche Argumente, die beim Ausführen von Docker übergeben werden
    --skip-mac-address         Keine MAC-Adresse zuweisen
    --run-image                Das für die Ausführung des Containers verwendete Image überschreiben
root@monstera:/var/discourse#