Я в какой-то мере понимаю, что в первый раз так делать — нормально. Давайте будем честны: я вообще не понимаю разницы между bootstrap и rebuild, но всемогущий ИИ сказал мне, что bootstrap нужно делать только в первый раз, потому что это какая-то странная работа для разработчиков, а после этого каждый раз достаточно просто rebuild.
Так почему не просто ./launcher rebuild web_only и всё? Потому что если я сначала сделаю destroy, то при неудачном rebuild у меня не останется ничего, чтобы перезапустить, верно?
Я понимаю, что при обновлении всего нужно сначала остановить web_only, затем выполнить действия с данными, и в последнюю очередь — снова web_only.
Если вы выполните пересборку, контейнер будет остановлен, затем запустится процесс инициализации (bootstrap), после чего старый контейнер будет уничтожен и запущен новый.
Пересборка не уничтожает существующий контейнер (пока не будет готов новый для запуска вместо него).
Если процесс инициализации не удался, вы можете самостоятельно перезапустить старый контейнер.
В первый раз нет причин не выполнять пересборку.
При последующих сборках лучше использовать инициализацию (bootstrap), чтобы существующий контейнер мог продолжать обрабатывать запросы, пока готовится новый контейнер.
Для контейнера с данными всегда рекомендуется выполнять пересборку, так как нежелательно, чтобы два экземпляра базы данных одновременно модифицировали одни и те же файлы.
При обновлении PostgreSQL необходимо сначала остановить все компоненты (веб-сервер не может работать без базы данных), а затем пересобрать контейнер с данными.
Пересборка также выполняет команду «git pull», поэтому вы можете использовать инициализацию (bootstrap) вместо неё, чтобы иметь полный контроль над этим процессом.
Это как жёсткий диск для целого компьютера. Контейнер — это просто целый компьютер, к которому можно подключиться только определёнными способами (через порты или через файлы, которые он обновляет и которые доступны операционной системе.