El comando del lanzador en la carpeta /var/discourse no es autoexplicativo

Tuve que cambiar y volver a cargar la configuración varias veces para solucionar problemas del servicio de correo de Siteground. Existen varios consejos sobre cómo hacerlo de la manera más rápida.
Resumirlos todos genera confusión.
¿Podrías explicarme con más detalle las diferencias entre los comandos listados a continuación?

La información en la guía de instalación y las publicaciones en este foro son de alguna manera inconsistentes. No está del todo claro, por ejemplo, cuál es la diferencia entre inicializar y construir un contenedor.
Debería existir una escalera de escalación que indique qué acciones requieren qué comando si modificas, por ejemplo, el archivo app.yml, ya que algunos dicen que start es suficiente, mientras que otros indican que debes usar rebuild o también ejecutar ./discourse-setup.

Comandos:
    start:      Iniciar/inicializar un contenedor
    stop:       Detener un contenedor en ejecución
    restart:    Reiniciar un contenedor
    destroy:    Detener y eliminar un contenedor
    bootstrap:  Inicializar un contenedor para la configuración basada en una plantilla
    rebuild:    Reconstruir un contenedor (destruir el antiguo, inicializar, iniciar el nuevo)

Estoy formando lentamente la impresión de que todos los comandos son una secuencia de acciones consecutivas.
Cada paso o comando sucesivo realiza lo mismo que su predecesor más algo adicional.

Por ejemplo, algo como esto:

  1. Inicio

    1. bootstrap: destruir el antiguo + inicializar un contenedor para la configuración basada en una plantilla
    2. rebuild: bootstrap + reconstruir un contenedor (iniciar el nuevo), lo que implica tareas como descargar las últimas versiones del software e implementar la configuración actualizada
    3. start: inicializar, lo que quiera que signifique
  2. Detención

    1. stop: Detener un contenedor en ejecución
    2. restart: Reiniciar un contenedor (incluye stop)
    3. destroy: Detener y eliminar un contenedor

No estoy seguro de que te esté siguiendo… ¿podrías hacer un PR con el cambio que propones?

Voy a hacer una PR en GitHub, pero necesito entender cada comando en detalle, algo que actualmente no es así.

¿Podrías decirme qué activa cada comando? He leído muchos posts al respecto, pero la información no es consistente.
Un buen ejemplo es start. En un caso se dice que solo se usa para detener e iniciar el contenedor, por ejemplo, si se hace algo en el host. En otro tema se menciona que inicializa un contenedor, sea lo que sea que signifique “inicializar” :confused:

Inicializar significa que si no existe un contenedor, se creará. Si detienes y luego inicias, se detendrá y se iniciará el mismo contenedor con los mismos parámetros (como smtp y otras configuraciones de entorno). Sin embargo, si primero lo destruyes, se creará o inicializará un nuevo contenedor con nuevas configuraciones de entorno.

¿Cuál es la diferencia entre ‘bootstrap’ y ‘start’ si no existe ningún contenedor?

Bootstrap crea una nueva imagen de Docker, lo cual es necesario para poder “inicializar” un contenedor en ejecución.

La reconstrucción siempre funcionará. A veces es innecesaria, ya que con destruir e iniciar es suficiente para que los ajustes del entorno (como SMTP) surtan efecto. Pero mucha gente no comprenderá realmente estos matices, así que es mejor simplemente decirles que siempre reconstruyan, porque eso siempre funciona.

así que ./discourse-setup es el comando menos invasivo, ya que solo recrea el software de Discourse.

  1. Bootstrap: desde cero, comienza con una imagen de Docker
  2. start: desde cero, construye un contenedor
  3. ./discourse-setup: ejecuta la configuración de Discourse

¿qué comando está disponible para volver a aplicar la configuración según:

  1. lo definido en app.yml?
  2. lo referenciado en app.yml?

asumiendo que app.yml es la fuente de todo, por lo que ./discourse-setup solo lee este archivo para realizar su función.

Si necesitas saber exactamente qué hace cada comando, puedes leerlo aquí: discourse_docker/launcher at master · discourse/discourse_docker · GitHub

gracias, eso ayuda :slight_smile:
Hay una configuración mencionada anteriormente, ¿tiene relación con ./discourse-setup?

Esto está un poco más completo ahora:

Uso: launcher COMANDO CONFIGURACIÓN [--skip-prereqs] [--docker-args CADENA]
Comandos:
    start:       Iniciar/inicializar un contenedor
    stop:        Detener un contenedor en ejecución
    restart:     Reiniciar un contenedor
    destroy:     Detener y eliminar un contenedor
    enter:       Abrir un shell para ejecutar comandos dentro del contenedor
    logs:        Ver los registros de Docker para un contenedor
    bootstrap:   Inicializar un contenedor para la configuración basándose en una plantilla
    run:         Ejecutar el comando dado con la configuración en el contexto de la última imagen inicializada
    rebuild:     Reconstruir un contenedor (eliminar el antiguo, inicializar, iniciar uno nuevo)
    cleanup:     Eliminar todos los contenedores que se han detenido durante > 24 horas
    start-cmd:   Generar el comando de Docker utilizado para iniciar el contenedor

Opciones:
    --skip-prereqs             No comprobar los prerrequisitos del lanzador
    --docker-args              Argumentos adicionales para pasar al ejecutar docker
    --skip-mac-address         No asignar una dirección mac
    --run-image                Anular la imagen utilizada para ejecutar el contenedor
root@monstera:/var/discourse#