согласно этому руководству. Здесь я разрабатываю Discourse, темы и плагины.
Также у меня установлен Discourse на виртуальной машине с использованием Docker согласно этому руководству.
Эти установки работают отлично.
Я не понимаю, что такое Docker и почему файлы на виртуальной машине отличаются от файлов на локальном компьютере.
Что произойдёт, если остановить Docker на виртуальной машине командой d/shutdown_dev?
Как синхронизировать эти две установки с помощью Git?
Могу ли я установить Docker на локальный компьютер и для чего это нужно?
Пожалуйста, помогите мне разобраться в этих вопросах.
Развертывание этого Docker-контейнера на вашем продакшн-сервере.
Один из вариантов использования Docker локально — тестирование вашего newly скомпилированного Docker-контейнера перед развертыванием на продакшн-сервере.
Наличие или отсутствие Docker в большинстве случаев не имеет значения для разработки плагинов и компонентов тем. Это отдельный вопрос. Я не запускаю экземпляр Docker в среде разработки.
При разработке дополнений для Discourse вам не следует зацикливаться на точной версии или конфигурации вашей среды разработки по сравнению с продакшеном, поскольку в любом случае вы обычно не контролируете большинство экземпляров, на которые в итоге попадёт ваш плагин, особенно если он с открытым исходным кодом. Самое важное — следовать лучшим практикам, чтобы сделать ваше дополнение более устойчивым к изменениям в ядре Discourse. Даже если вы разрабатываете только для своего собственного экземпляра Discourse, вы всё равно не контролируете изменения в ядре, поэтому тот же подход применим.
Незначительные различия в версиях, как правило, не должны приводить к сбоям вашего плагина или компонента темы. Это возможно, но не является закономерным. Мои плагины и компоненты тем могут работать месяцами без необходимости внесения изменений, даже если изменения в ядре происходят с большими интервалами.
Обычно я обновляю свою среду разработки до последней версии master при работе над изменениями плагинов (исправления или улучшения), чтобы отловить любые breaking changes. Это просто делается через git pull, bundle install и db:migrate.
Продакшен-экземпляры следует обновлять либо через веб-интерфейс, либо через командную строку с помощью rebuild.
Мой совет: опубликуйте плагин, привлечите пользователей и учитесь на практике, сталкиваясь с реальными проблемами. Не откладывайте надолго: действуйте! И не бойтесь совершать ошибки, ведь они помогают вам учиться.
Я бы задал такие вопросы в теме для разработчиков Docker. На данный момент я бы не стал менять скрипты «из коробки», используемые для поддержки разработки на Docker, если у вас нет очень веской причины; скорее всего, они созданы, чтобы помочь вам.