Using a launcher built docker image in docker-compose

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

Вот что я делаю на других хостингах, не связанных с Discourse: обычно я использую Flyway для выполнения миграций в базе данных, а также для других задач, таких как очистка кэша Redis, но без запуска других ресурсоемких процессов, особенно тех, которые зависят от внешних сервисов, например, обновления сертификатов https (это я бы делал через cron-задачу, кроме первого запуска, что вполне допустимо) или изменения кодовой базы (она должна быть статичной в образе, как пакеты, библиотеки и прочее). Похоже, что Discourse использует rake, что нормально, но он также выполняет другие задачи, такие как установка gems, генерация ассетов, обновление базы данных MaxMind и, возможно, другие сервисы (что может сломать шаг пересборки, если, например, сервис недоступен или если они изменят API, что случается редко, но возможно).

Я не утверждаю, что Discourse должен действовать именно так, конечно. Но создание образа в среде CI и выполнение только шага миграции базы данных на тестовых/продакшн-серверах с определением переменных окружения — это то, чего я ожидаю, и это легко реализуемо с помощью другого ПО, такого как WordPress, MediaWiki, Rocket.Chat и т. д. Discourse, на мой взгляд, лучшее программное обеспечение для форумов, и у них могут быть веские причины для такого подхода, но пока я бы использовал только стандартную установку (или установку с несколькими контейнерами), чтобы избежать проблем, и просто надеялся бы, что при пересборке ничего не пойдет не так.

Похоже, что bootstrap все же должен выполняться в продакшн-окружении, а не в среде CI для создания базового образа, который можно использовать как в тестовом, так и в продакшн-окружении. Кроме того, отсутствие стандартной установки является серьезным предупреждающим знаком, который может стать головной болью в будущем по мере получения программным обеспечением обновлений.