- При условии, что все конфигурации остаются неизменными (сборка и запуск выполняются одинаково)
- Чтобы ускорить процесс сборки, я хотел бы создать образ на выделенном сервере упаковки, загрузить его в Harbor, а затем скачать перед использованием готового образа, чтобы сократить время компиляции.
- Подскажите, пожалуйста, существуют ли какие-либо соответствующие руководства, которые можно реализовать таким образом? Или это можно сделать самостоятельно, но без официальной поддержки, и потребуется самостоятельное изучение?
Я думаю, что команда Discourse делает что-то подобное для своего хостингового продукта, поэтому вы можете запустить свой форум у них за считанные минуты (было бы действительно неэффективно, если пользователю придется ждать установки всего, верно?). Однако, я не думаю, что для этого есть #документация.
Я не знаю о существовании руководства, но в целом процесс выглядит так: вы делаете сборку (bootstrap), загружаете полученный образ в свой репозиторий, а затем используете команду ./launcher start-cmd, чтобы получить необходимые переменные окружения (ENV) для запуска контейнера.
На каком-то этапе необходимо выполнить миграцию базы данных. Если вы хотите обеспечить развертывание без простоя (zero-downtime deployment), вам следует узнать о переменной SKIP_POST_DEPLOYMENT_MIGRATIONS. Она позволяет выполнить миграцию базы данных, пока работает старый контейнер, а затем запустить rake db:ensure_post_migrations db:migrate после запуска нового. Также необходимо предварительно скомпилировать ассеты и, если вы используете S3, загрузить их туда.
Это, по крайней мере, основные специфичные для Discourse шаги. Если вам нужна дополнительная помощь и у вас есть бюджет, я готов помочь.