La commande du lanceur dans le dossier /var/discourse n'est pas auto-explicative

J’ai dû modifier et recharger la configuration plusieurs fois pour dépanner le service de messagerie de Siteground. Il existe de nombreux conseils sur la manière de le faire le plus rapidement possible.
Cependant, les résumer crée de la confusion.
Pourriez-vous donc m’expliquer plus en détail les différences entre les commandes listées ci-dessous ?

Les informations figurant dans le guide d’installation et dans les publications de ce forum sont quelque peu incohérentes. Il n’est pas entièrement clair, par exemple, quelle est la différence entre l’initialisation et la construction d’un conteneur.
Il devrait exister une échelle d’escalade indiquant quelles actions nécessitent quelle commande si vous modifiez, par exemple, le fichier app.yml, car certains affirment que start suffit, tandis que d’autres disent qu’il faut rebuild ou même exécuter ./discourse-setup.

Commandes :
    start :      Démarrer/initialiser un conteneur
    stop :       Arrêter un conteneur en cours d'exécution
    restart :    Redémarrer un conteneur
    destroy :    Arrêter et supprimer un conteneur
    bootstrap :  Initialiser un conteneur pour la configuration basée sur un modèle
    rebuild :    Reconstruire un conteneur (supprimer l'ancien, initialiser, démarrer le nouveau)

Je commence à avoir l’impression que toutes les commandes forment une séquence d’actions successives.
Chaque étape/commande suivante fait la même chose que sa précédente, plus quelque chose en plus.

Par exemple, quelque chose comme ceci :

  1. Démarrage

    1. bootstrap : supprimer l’ancien + initialiser un conteneur pour la configuration basée sur un modèle
    2. rebuild : bootstrap + reconstruire un conteneur (démarrer le nouveau), ce qui implique des tâches comme télécharger les dernières versions des logiciels et appliquer la configuration mise à jour
    3. start : initialiser, peu importe ce que cela signifie exactement
  2. Arrêt

    1. stop : arrêter un conteneur en cours d’exécution
    2. restart : redémarrer un conteneur (incluant l’arrêt)
    3. destroy : arrêter et supprimer un conteneur

Je ne suis pas sûr de bien comprendre… pourrais-tu ouvrir une PR avec la modification que tu proposes ?

Je vais faire une PR sur GitHub, mais j’ai besoin de comprendre chaque commande en détail, ce qui n’est pas le cas actuellement.

Pourriez-vous m’expliquer ce que déclenche chaque commande ? J’ai lu de nombreux articles à ce sujet, mais les informations ne sont pas cohérentes.
Un bon exemple est start. On dit parfois qu’il sert uniquement à arrêter et redémarrer le conteneur, par exemple si l’on effectue une action sur l’hôte. Dans un autre sujet, il est mentionné qu’il initialise un conteneur, quoi que cela signifie :confused:

Initialiser signifie que si aucun conteneur n’existe, il sera créé. Si vous arrêtez et redémarrez, vous arrêterez et redémarrerez le même conteneur avec les mêmes paramètres (comme les paramètres SMTP et autres variables d’environnement). Cependant, si vous détruisez d’abord le conteneur, un nouveau conteneur avec de nouveaux paramètres d’environnement sera créé ou initialisé.

Quelle est la différence entre bootstrap et start si aucun conteneur n’existe ?

Bootstrap crée une nouvelle image Docker, ce qui est nécessaire pour pouvoir « initialiser » un conteneur en cours d’exécution.

La reconstruction fonctionnera toujours. Parfois, elle est inutile, car une destruction et un redémarrage suffisent pour que les paramètres de l’environnement (comme SMTP) prennent effet. Mais beaucoup de gens ne comprendront pas vraiment ces subtilités, il vaut donc mieux leur dire de toujours reconstruire, car cela fonctionne à tous les coups.

Donc ./discourse-setup est la commande la moins invasive car elle ne recrée que le logiciel de Discourse.

  1. Bootstrap : à partir de zéro, commence avec une image Docker
  2. start : à partir de zéro, construit un conteneur
  3. ./discourse-setup : exécute la configuration de Discourse

Quelle commande permet de réappliquer la configuration telle qu’elle est :

  1. définie dans app.yml ?
  2. référencée dans app.yml ?

En supposant que app.yml soit la source de vérité, donc ./discourse-setup ne lit que ce fichier pour accomplir sa tâche.

Si vous devez savoir exactement ce que fait chaque commande, vous pouvez le lire ici : discourse_docker/launcher at master · discourse/discourse_docker · GitHub

Merci, cela aide :slight_smile:
Il y a une configuration mentionnée une fois, est-elle liée à ./discourse-setup ?

Ceci est un peu plus complet maintenant :

Usage : launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commandes :
    start :       Démarrer/initialiser un conteneur
    stop :        Arrêter un conteneur en cours d'exécution
    restart :     Redémarrer un conteneur
    destroy :     Arrêter et supprimer un conteneur
    enter :       Ouvrir un shell pour exécuter des commandes à l'intérieur du conteneur
    logs :        Afficher les logs Docker pour un conteneur
    bootstrap :   Bootstrap un conteneur pour la configuration basé sur un modèle
    run :         Exécuter la commande donnée avec la configuration dans le contexte de la dernière image bootstrappée
    rebuild :     Reconstruire un conteneur (détruire l'ancien, bootstrap, démarrer le nouveau)
    cleanup :     Supprimer tous les conteneurs arrêtés depuis plus de 24 heures
    start-cmd :   Générer la commande docker utilisée pour démarrer le conteneur

Options :
    --skip-prereqs             Ne pas vérifier les prérequis du lanceur
    --docker-args              Arguments supplémentaires à passer lors de l'exécution de docker
    --skip-mac-address         Ne pas attribuer d'adresse mac
    --run-image                Remplacer l'image utilisée pour exécuter le conteneur
root@monstera:/var/discourse#