I comandi del launcher nella cartella /var/discourse non sono autoesplicativi

Ho dovuto modificare e ricaricare la configurazione più volte per risolvere i problemi relativi al servizio di posta di Siteground. Ci sono diversi consigli su come farlo nel modo più rapido.
Riassumerli tutti crea confusione.
Quindi, potresti spiegarmi in modo più dettagliato le differenze tra i comandi elencati qui sotto?

Le informazioni presenti nella guida all’installazione e nei post di questo forum sono in qualche modo incoerenti. Non è del tutto chiaro, ad esempio, qual è la differenza tra l’inizializzazione e la costruzione di un contenitore.
Dovrebbe esserci una scala di escalation che indichi quali azioni richiedono quale comando, ad esempio se si modifica app.yml: alcuni dicono che start è sufficiente, altri affermano che è necessario rebuild o anche eseguire ./discourse-setup.

Comandi:
    start:      Avvia/inizializza un contenitore
    stop:       Ferma un contenitore in esecuzione
    restart:    Riavvia un contenitore
    destroy:    Ferma e rimuove un contenitore
    bootstrap:  Avvia (bootstrap) un contenitore per la configurazione basata su un modello
    rebuild:    Ricompila un contenitore (distrugge il vecchio, esegue bootstrap, avvia il nuovo)

Sto lentamente arrivando alla convinzione che tutti i comandi rappresentino una sequenza di azioni successive.
Ogni passaggio o comando successivo fa quanto il suo predecessore più qualcosa in più.

Ad esempio, qualcosa del genere:

  1. Avvio

    1. bootstrap: distrugge il vecchio + avvia (bootstrap) un contenitore per la configurazione basata su un modello
    2. rebuild: esegue bootstrap + ricompila un contenitore (avvia il nuovo), il che significa che esegue operazioni come il download delle ultime versioni del software e l’applicazione della configurazione aggiornata
    3. start: inizializza, qualsiasi cosa ciò significhi
  2. Arresto

    1. stop: Ferma un contenitore in esecuzione
    2. restart: Riavvia un contenitore (incluso lo stop)
    3. destroy: Ferma e rimuove un contenitore

Non sono sicuro di aver capito bene… puoi aprire una PR con la modifica che proponi?

Sto per fare una PR su GitHub, ma ho bisogno di comprendere ogni comando in dettaglio, cosa che attualmente non è il caso.

Potresti dirmi cosa attiva ogni comando? Ho letto molti post a riguardo, ma le informazioni non sono coerenti.
Un buon esempio è start. Si dice che viene utilizzato solo per fermare e riavviare il container, ad esempio se si sta facendo qualcosa sull’host. In un altro argomento invece si menziona che inizializza un container, qualunque cosa significhi “inizializza” :confused:

Inizializzare significa che, se non esiste un container, verrà creato. Se arresti e riavvii, fermerai e riavvierai lo stesso container con gli stessi parametri (come le impostazioni SMTP e altre variabili d’ambiente), ma se prima lo distruggi, verrà creato o inizializzato un nuovo container con nuove impostazioni d’ambiente.

Qual è la differenza tra ‘bootstrap’ e ‘start’ se non esiste un container?

Bootstrap crea una nuova immagine Docker, necessaria per poter “inizializzare” un container in esecuzione.

La ricostruzione funziona sempre. A volte è superflua, poiché una distruzione e un riavvio sono sufficienti per far applicare le impostazioni dell’ambiente (come SMTP). Tuttavia, molte persone non comprendono davvero queste sottigliezze, quindi è meglio indicare loro di ricostruire sempre, dato che funziona in ogni caso.

Quindi ./discourse-setup è il comando meno invasivo, in quanto ricrea solo il software di Discourse.

  1. Bootstrap: da zero, inizia con l’immagine Docker
  2. start: da zero, crea un contenitore
  3. ./discourse-setup: esegue la configurazione di Discourse

Quale comando è disponibile per riapplicare la configurazione come:

  1. definita in app.yml?
  2. riferita in app.yml?

Assumendo che app.yml sia la fonte di tutto, quindi ./discourse-setup legge solo questo file per svolgere il suo compito.

Se hai bisogno di sapere esattamente cosa fa ogni comando, puoi leggerlo qui: discourse_docker/launcher at master · discourse/discourse_docker · GitHub

Grazie, mi è stato utile :slight_smile:
È stato menzionato in precedenza un setup, è correlato a ./discourse-setup?

This is a bit more complete now:

Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Comandi:
    start:       Avvia/inizializza un container
    stop:        Arresta un container in esecuzione
    restart:     Riavvia un container
    destroy:     Arresta e rimuove un container
    enter:       Apri una shell per eseguire comandi all'interno del container
    logs:        Visualizza i log di Docker per un container
    bootstrap:   Avvia un container per la configurazione basata su un template
    run:         Esegui il comando dato con la configurazione nel contesto dell'ultima immagine avviata
    rebuild:     Ricostruisci un container (distruggi il vecchio, avvia il nuovo)
    cleanup:     Rimuovi tutti i container che sono stati arrestati per più di 24 ore
    start-cmd:   Genera il comando docker utilizzato per avviare il container

Opzioni:
    --skip-prereqs             Non controllare i prerequisiti del launcher
    --docker-args              Argomenti aggiuntivi da passare durante l'esecuzione di docker
    --skip-mac-address         Non assegnare un indirizzo mac
    --run-image                Ignora l'immagine utilizzata per eseguire il container
root@monstera:/var/discourse#