./launcher 进入应用程序重新构建所有内容

新手用户,以下是用于启动讨论的几行记录:

# ./launcher enter app                                                                                                                                                                         
检测到 x86_64 架构。                                                                                                                                                                                                   
                                                                                                                                                                                                                        
警告:我们将开始下载 Discourse 基础镜像                                                                                                                                                     
此过程可能需要几分钟到一小时不等,具体取决于您的网络速度                                                                                                                                                       
                                                                                                                                                                                                                        
请耐心等待                                                                                                                                                                                                       
                                                                                                                                                                                                                        
2.0.20240602-0023:正在拉取 discourse/base                                                                                                                                                                          
728328ac3bde:正在解压 [=============================>                     ]  18.68MB/31.43MB                                                                                                                         
1c0ca3c0af81:下载完成
...

这不是我期望的。

输入命令 docker ps 显示我有一个某种形式的 Discourse 容器已经在运行。我只想进入那个正在运行的容器的 shell……而不是重建整个应用程序。事实上,在 ./launcher 脚本中(大约第 746 行),看起来 ./launcherenter 命令应该最终完成我期望的事情……即发出命令

docker exec -it app /bin/bash

在做这些之前,是否有令人信服的理由要做很多其他工作?如果有,请赐教;如果没有,也许有经验和技能的人可以将这个问题转化为一个有用的建议。谢谢。

1 个赞

是的,这种情况至少已经持续一年了。幸运的是,下载新镜像通常不会花费很长时间,而且在将您带入 shell 之前,它似乎不会做太多其他事情。

不过,它确实会不必要地在驱动器上堆积大量从未使用过的镜像。也许它们有一些不那么明显的目的。

这看起来像是一个 bug?为什么尝试进入容器会下载一个新镜像?

我注意到它只执行一次……如果你第二次运行 ./launcher enter app,它会跳过镜像检查。也许这里有什么权衡……

那是因为在那时镜像已经下载了?

但是它为什么一开始会这样做呢?
你正试图进入现有的容器。仅此而已。

它执行 git pull 并拉取新镜像,因为如果没有这样做,许多人会遇到麻烦,因为东西已过时。

如果您有不执行 pull 的理由,请改用 docker run 命令。

1 个赞

我认为这可能是原因。将冷酷的逻辑与用户的期望的怪癖进行平衡从来都不是一件容易的事。

我不得不吸取了惨痛的教训。现在我知道了,我能理解设计决策。

感谢回复和出色的软件。

1 个赞

它并没有重建整个容器。它只是执行了一个 git pull 的 docker_discourse,并拉取了新的基础镜像,然后像你期望的那样将其放入容器中。这就是为什么第一次之后它就不会再这样做了。除非你的磁盘空间极其不足,或者 10-30 秒对你来说是很长的时间,否则这并不是一个真正的问题。

2 个赞