/var/discourse 文件夹中的启动器命令并不自明

为了排查 Siteground 邮件服务的问题,我不得不多次更改并重新加载配置。关于如何最快速地完成此操作,网上有多种建议。
将所有这些建议汇总起来反而令人困惑。
因此,能否更详细地告诉我以下命令之间的区别?

安装指南 中的信息与本论坛中的帖子存在某些不一致之处。例如,初始化容器和构建容器之间的区别究竟为何,目前尚不完全清楚。
应该有一个“升级阶梯”,说明当您更改例如 app.yml 文件时,需要执行哪些操作以及对应哪些命令,因为有人称只需执行 start,而另一些人则称必须执行 rebuild 或同时执行 ./discourse-setup

命令:
    start:      启动/初始化容器
    stop:       停止正在运行的容器
    restart:    重启容器
    destroy:    停止并删除容器
    bootstrap:  基于模板为配置引导容器
    rebuild:    重建容器(销毁旧容器、引导、启动新容器)

我逐渐形成一种印象:所有命令都是按顺序执行的一系列操作。
每个后续步骤/命令都包含其前序步骤的功能,并额外增加了一些操作。

例如,类似如下:

  1. 启动流程

    1. bootstrap:销毁旧容器 + 基于模板为配置引导容器
    2. rebuild:执行 bootstrap + 重建容器(启动新容器),这意味着它会执行诸如下载最新版本的软件并应用更新后的配置等操作
    3. start:初始化(具体含义视情况而定)
  2. 停止流程

    1. stop:停止正在运行的容器
    2. restart:重启容器(包含停止操作)
    3. destroy:停止并删除容器

我不太确定我是否理解了……你能创建一个包含你提议更改的 PR 吗?

我打算在 GitHub 上提交一个 PR,但我需要详细了解每个命令的具体作用,而目前我尚未完全理解。

您能告诉我每个命令会触发什么操作吗?我查阅了许多相关帖子,但信息并不一致。
一个很好的例子是 start 命令。有说法称它仅用于在主机上进行某些操作时停止和启动容器;而在另一个话题中,它又被提到用于初始化容器——至于“初始化”具体指什么,我也不太清楚 :confused:

初始化意味着:如果不存在容器,将会创建一个新的容器。如果您执行停止和启动操作,将使用相同的参数(如 SMTP 和其他环境变量设置)停止并启动同一个容器;但如果您先执行销毁操作,则会创建或初始化一个具有新环境变量设置的新容器。

如果容器不存在,bootstrap 和 start 有什么区别?

Bootstrap 会构建一个新的 Docker 镜像,这是初始化运行中的容器所必需的。

重建操作始终有效。有时这并非必要,因为销毁并重新启动就足以使环境设置(如 SMTP)生效。但许多人并不真正理解这些细节,因此最好直接告诉他们始终执行重建,因为这样总是能成功。

所以 ./discourse-setup 是侵入性最小的命令,因为它仅重新创建 Discourse 的软件。

  1. Bootstrap:从零开始,从 Docker 镜像起步
  2. start:从零开始,构建容器
  3. ./discourse-setup:运行 Discourse 的设置

有哪些命令可以重新应用以下配置?

  1. app.yml 中定义的?
  2. app.yml 中引用的?

假设 app.yml 是任何内容的来源,因此 ./discourse-setup 仅读取此文件来执行其任务。

如果您需要确切了解每个命令的功能,请在此阅读:discourse_docker/launcher at master · discourse/discourse_docker · GitHub

谢谢,这很有帮助 :slight_smile:
这里有一个曾经提到的设置,它与 ./discourse-setup 有关吗?

现在内容更完整了:

用法:launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
命令:
    start:       启动/初始化容器
    stop:        停止正在运行的容器
    restart:     重启容器
    destroy:     停止并移除容器
    enter:       打开一个 shell 在容器内运行命令
    logs:        查看容器的 Docker 日志
    bootstrap:   根据模板为配置引导容器
    run:         在最后一个引导的镜像的上下文中,使用配置运行给定命令
    rebuild:     重建容器(销毁旧的,引导,启动新的)
    cleanup:     移除所有已停止超过 24 小时的容器
    start-cmd:   生成用于启动容器的 docker 命令

选项:
    --skip-prereqs             不检查启动器先决条件
    --docker-args              运行 docker 时传递的额外参数
    --skip-mac-address         不分配 mac 地址
    --run-image                覆盖用于运行容器的镜像
root@monstera:/var/discourse#