我今天查看了 Discourse 可用的 Docker 镜像,有几个问题想请教:
- 在两个镜像中,我都看到它们列出了会安装 Discourse(这很明显)。随后还列出了让一切正常运行所需的步骤,主要是域名和电子邮件配置。
我对数据库感到困惑。文档中没有配置数据库的步骤。Postgres(或其他)数据库是否包含在同一个镜像中?Redis 呢?还是说这完全是可选的?
在 Docker 镜像所包含的内容列表中,并没有列出数据库。
我在工作中使用 Docker 进行开发、测试和生产部署。
我们的容器是不可变的。
当我们需要升级并推送新镜像时,它会从 Git 获取最新代码,然后自动部署。
我们绝不会在容器内进行任何更改,或者至少不会进行任何预期能持续到下一次推送之后的更改。
例如,当我们希望升级到更新版本的 .NET 时,只需修改基础镜像并推送即可。
阅读关于 Discourse Docker 镜像的资料时,我发现其中似乎对镜像内容进行了修改,就像常规安装一样。这些对镜像的修改是 meant to be persisted(旨在持久化)吗?
我最初读到这部分时,以为所有内容都存储在数据库中。但随后我意识到数据库是否在容器内部?那么对数据库的修改也会被持久化吗?
如果是这样,当我停止容器再重新启动时,如何确保所有更改都被保存?
第二个也是更重要的问题是:这对升级到论坛软件的新版本有何影响?
从我所读到的内容来看,似乎是使用容器内的实例对软件自身进行更新。而我原本期望的是:推送一个包含更新的新镜像,一切就会自动完成。
我想主要是因为我习惯于将 Docker 镜像视为“牲畜”:它们会死亡,会被重新推送,镜像本身永远不会被持久化修改。
我之前并不知道 Docker 镜像会持久化那些超过下次重启后仍有效的更改。