问题描述
我一直将 Kiwi TCMS 作为 Docker 容器运行,运行的版本是 9.0.1。现在已经看到最新的10.0版本了,所以想更新一下。不确定这不会破坏现有数据。
所以,我已经按照它获取了数据库并上传了文件备份, https://kiwitcms.org/blog/atodorov/2018/07/30/how-to-backup-docker-volumes-for-kiwi-tcms/
但是,如果最新版本无法按预期运行或出现任何问题,我该如何降级到旧版本映像?我发现了 docker 标签概念,但不知道如何应用它?
您能否确认以下内容会恢复到旧版本?
- 恢复已备份的数据库文件和上传的文件。
- 将 docker-compose 文件中的图像更改为较旧的图像?就像我的情况一样,我可能想要拉取 9.0.1 版映像,因此更改 映像:kiwitcms/kiwi:9.0.1 是否有效?
web:
container_name: kiwi_web
depends_on:
- db
restart: always
image: kiwitcms/kiwi:9.0.1
或者我应该如何标记版本9.0.1,然后恢复标记的版本,以防恢复最新升级?
解决方法
但是,如果最新版本无法按预期运行或出现任何问题,我该如何降级到旧版本映像?我发现了 docker 标签概念,但不知道如何应用它?
最简单的方法是销毁您不满意的实例,从头开始创建一个新实例(使用 v9.0.1)并从备份中恢复文件/数据库。我假设您在升级前进行了备份。
图片:kiwitcms/kiwi:9.0.1 可以用吗?
理论上可行,但实际上行不通,因为 Kiwi TCMS 上游不提供带有版本标记的容器映像。参见 https://kiwitcms.org/#subscriptions,行 Only latest releases
与 Versioned releases from kiwitcms/version
。
或者我应该如何标记版本 9.0.1
根据您已经完成或未完成的操作,这可能是可能的,也可能是不可能的:
- 执行
docker images
,如果您看到类似的内容
kiwitcms/kiwi latest 9f23186803d5 8 weeks ago 736MB
kiwitcms/kiwi <no tag> <another image hash> ...
这意味着 latest
指向 v10,而未标记的图像是您之前的图像,在您的情况下为 9.0.1。然后您可以使用 docker tag
命令来标记它并在 docker-compose.yml
文件中使用它。
- 如果您只看到
kiwitcms/kiwi:latest
图像,这意味着您已从系统中删除了前一张图像。您无权访问它。您的选择是:- 使用相同的 git 标签从源代码重新构建它或
- 如果需要恢复到旧版本,请购买订阅以访问私有
kiwitcms/version
存储库。
作为一种好的做法,您可以遵循以下 2 条建议:
-
使用“从备份恢复”技术或“克隆 docker 镜像”,以便您升级和试验不同的 Kiwi TCMS 实例,而不是您使用的主要实例。如果您对最新版本感到满意,那么您可以升级主实例。请注意,这里所说的“克隆 docker 镜像”是指使正在运行的镜像/容器文件在不同的机器上或可能在同一台主机上可用,但启动辅助 Kiwi TCMS 实例 + 辅助数据库。 ATM 我不确定如何准确地做到这一点,但
docker
本身或其他 Linux 工具应该能够在这里提供帮助。 -
docker tag
您的本地kiwitcms/kiwi
映像在您下载/部署/升级它们时,以便您可以参考此时的版本。这将避免丢失旧图像。 -
额外提示:使用
docker tag
,您还可以提供自己自定义的图像名称,并可能将这些图像上传到您自己的 docker 存储库,以便以后访问/备份或在多个主机系统之间分发它们。
此答案由 Kiwi TCMS 团队成员提供给您。如果您觉得有用,请考虑通过 https://opencollective.com/kiwitcms#category-CONTRIBUTE
的小额捐款帮助社区