./launcher enter app пересобирает всё

Я новичок, вот несколько строк из лога для начала обсуждения:

# ./launcher enter app                                                                                                                                                                         
x86_64 arch detected.                                                                                                                                                                                                   
                                                                                                                                                                                                                        
WARNING: We are about to start downloading the Discourse base image                                                                                                                                                     
This process may take anywhere between a few minutes to an hour, depending on your network speed                                                                                                                        
                                                                                                                                                                                                                        
Please be patient                                                                                                                                                                                                       
                                                                                                                                                                                                                        
2.0.20240602-0023: Pulling from discourse/base                                                                                                                                                                          
728328ac3bde: Extracting [=============================>                     ]  18.68MB/31.43MB                                                                                                                         
1c0ca3c0af81: Download complete
...

Это не то, что я ожидал.

Команда docker ps показывает, что контейнер с какой-то версией Discourse уже запущен. Всё, что я хочу сделать, — получить оболочку в этом запущенном контейнере, а не пересобирать всё приложение. Действительно, внутри скрипта ./launcher (примерно на строке 746) видно, что команда enter для ./launcher должна в итоге сделать то, чего я ожидал, а именно выполнить команду

docker exec -it app /bin/bash

Есть ли веская причина выполнять перед этим множество других операций? Если да, пожалуйста, объясните; если нет, возможно, кто-то с опытом и навыками сможет превратить этот вопрос в полезное предложение. Спасибо.

Да, это происходит уже как минимум год. К счастью, загрузка нового образа обычно не занимает много времени, и до входа в оболочку система вроде бы ничего лишнего не делает.

Однако это, казалось бы, излишне засоряет диск кучей образов, которые никогда не используются. Возможно, у них есть какая-то цель, которая не сразу очевидна.

Это похоже на ошибку? Почему попытка входа в контейнер должна запускать загрузку нового образа?

Я заметил, что это происходит только один раз… если запустить ./launcher enter app во второй раз, проверка образа пропускается. Возможно, здесь есть какой-то компромисс…

Разве это не потому, что к этому моменту образ уже загружен?

Да, но зачем оно вообще это делает?

Вы пытаетесь войти в уже существующий контейнер. Всё.

Выполняется git pull и загружается новый образ, так как без этого у многих возникали проблемы из-за устаревших данных.

Если у вас есть причина не выполнять pull, используйте команду docker run.

Я думал, что это может быть причиной. Балансировка между железной логикой и особенностями ожиданий пользователей никогда не бывает простой.

Мне пришлось узнать это на собственном опыте. Теперь, когда я это понимаю, я могу оценить решение разработчиков.

Спасибо за ответы и за отличное программное обеспечение.

Это не пересборка всего контейнера. Просто выполняется git pull для docker_discourse, загружаются свежие базовые образы, а затем они помещаются в контейнер, как вы и ожидаете. Именно поэтому после первого раза это больше не происходит. Если только у вас критически мало свободного места на диске или 10–30 секунд для вас — это слишком долго, то это действительно не проблема.