jbrains
(J. B. Rainsberger)
1
大家好。这个问题听起来可能很蠢,但我还是想问一下。
我陷入了一个熟悉的循环:
- 升级失败。
- 尝试运行
./launcher rebuild app,但磁盘空间不足。(剩余不到 5 GB。)
- 运行
./launcher cleanup,这似乎释放了一些磁盘空间。(剩余超过 5 GB。)
- 回到步骤 2。
由于我还不太清楚哪些操作是安全的(即不会破坏我的网站数据),我小心翼翼地摸索着,希望能避免从备份中恢复。我最终做了以下操作,似乎对我有效:
- 运行
./launcher stop app
- 运行
./launcher cleanup,这次清理出的空间比之前多了很多,这让我立刻感到紧张。
- 运行
git pull
- 运行
./launcher rebuild app
这不仅成功了,而且网站运行正常,数据完好无损,并且剩余空间比之前多了大约 2 GB。
现在我不确定我所做的操作是聪明、显而易见,还是有风险但恰好奏效。我想更好地理解为什么我会得到这样的结果,以及这是否是一种合理的升级方式。
非常感谢。
1 个赞
pfaffman
(Jay Pfaffman)
2
docker 在构建容器时会创建大量文件(包括它构建的容器)。当你构建一个新容器时,你仍然拥有旧容器(以及磁盘映像)。这就是清理时会删除的内容。
在 discourse 运行时执行清理命令会稍微安全一些,因为清理命令不会删除正在运行的容器。如果重建出现问题,你仍然可以重新启动旧容器(如果它存在)。
因此,我会删除上面第 (1) 步,而第 (3) 步是不必要的,因为 ./launcher 会执行拉取(以前它不会)。
Firepup650
(Firepup Sixfifty)
3
可能是错的,但这是否会导致第一个未正常工作的块中相同的两个步骤(2-4)?
顺便说一句,这看起来有点像这个话题的更多内容:
2 个赞
pfaffman
(Jay Pfaffman)
4
哎呀。是的。我没重读。
所以,如果你的磁盘空间非常紧张,以至于没有空间放两个镜像,那么你需要销毁所有镜像,然后再构建一个新的镜像,如果你因为某些原因无法构建新的镜像,那你就陷入了困境。如果是这种情况,你真的需要更多的磁盘空间。最简单的方法是将备份移到 S3。
1 个赞
jbrains
(J. B. Rainsberger)
5
“磁盘空间如此紧张”在我的情况下让我感到惊讶。我运行清理,有 7.9 GB 的可用空间,然后我运行 ./launcher rebuild app,它拒绝完成。在我想要重建应用程序时,7.9 GB 的可用空间真的太少了?!
(更新:现在我明白了这是如何发生的。我把它留在这里供无辜的旁观者在网络搜索中找到。请阅读整个帖子,各位!)
jbrains
(J. B. Rainsberger)
6
谢谢!这确实是问题所在!而这似乎是关键点:"Less than 5GB of free space" — not true! 👀 - #3 by Simon_Manning
特别是:
对于这次特定的重建,您需要下载一个新的基础镜像
最好能以某种方式将此信息包含在升级过程中,无论是作为提前警告“我们需要下载一个新的基础镜像,所以您可能需要比平时多 3 GB 的空间才能升级。如果您空间不足,那很可能就是原因。”,还是在升级/重建过程空间不足时提供更详细的错误提示。否则,我们就会陷入一个无休止的循环:“好了!您(似乎)有足够的空间了!”(皮卡德伸出手臂。)
另外,当您想说“相信我,兄弟。我有足够的磁盘空间。”时,不必费力去寻找使用 ./launcher rebuild app --skip-prereqs 的选项,这也会很有帮助。是的,请用粗体、红色、72 号字体显示警告。
这种“新基础镜像使升级变得棘手”的情况发生得并不频繁,以至于我们会忘记它,但在升级过程中却会造成问题。关于如何解决这些问题的文章,最合适的地方在哪里?
谢谢。
system
(system)
关闭
7
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.