Проблемы с пониманием развития Discourse

Всем привет.
У меня установлен Discourse на локальном компьютере по адресу

http://localhost:4200/

согласно этому руководству. Здесь я разрабатываю Discourse, темы и плагины.
Также у меня установлен Discourse на виртуальной машине с использованием Docker согласно этому руководству.
Эти установки работают отлично.

Я не понимаю, что такое Docker и почему файлы на виртуальной машине отличаются от файлов на локальном компьютере.

Что произойдёт, если остановить Docker на виртуальной машине командой d/shutdown_dev?

Как синхронизировать эти две установки с помощью Git?

Могу ли я установить Docker на локальный компьютер и для чего это нужно?

Пожалуйста, помогите мне разобраться в этих вопросах.

Позвольте мне проиллюстрировать процесс:

  1. Работа над вашим кодом (внутри /discourse).
  2. Компиляция вашего кода в Docker-контейнер.
  3. Развертывание этого Docker-контейнера на вашем продакшн-сервере.

Один из вариантов использования Docker локально — тестирование вашего newly скомпилированного Docker-контейнера перед развертыванием на продакшн-сервере.

Наличие или отсутствие Docker в большинстве случаев не имеет значения для разработки плагинов и компонентов тем. Это отдельный вопрос. Я не запускаю экземпляр Docker в среде разработки.

При разработке дополнений для Discourse вам не следует зацикливаться на точной версии или конфигурации вашей среды разработки по сравнению с продакшеном, поскольку в любом случае вы обычно не контролируете большинство экземпляров, на которые в итоге попадёт ваш плагин, особенно если он с открытым исходным кодом. Самое важное — следовать лучшим практикам, чтобы сделать ваше дополнение более устойчивым к изменениям в ядре Discourse. Даже если вы разрабатываете только для своего собственного экземпляра Discourse, вы всё равно не контролируете изменения в ядре, поэтому тот же подход применим.

Незначительные различия в версиях, как правило, не должны приводить к сбоям вашего плагина или компонента темы. Это возможно, но не является закономерным. Мои плагины и компоненты тем могут работать месяцами без необходимости внесения изменений, даже если изменения в ядре происходят с большими интервалами.

Обычно я обновляю свою среду разработки до последней версии master при работе над изменениями плагинов (исправления или улучшения), чтобы отловить любые breaking changes. Это просто делается через git pull, bundle install и db:migrate.

Продакшен-экземпляры следует обновлять либо через веб-интерфейс, либо через командную строку с помощью rebuild.

Мой совет: опубликуйте плагин, привлечите пользователей и учитесь на практике, сталкиваясь с реальными проблемами. Не откладывайте надолго: действуйте! И не бойтесь совершать ошибки, ведь они помогают вам учиться.

Спасибо большое за ваш ответ.
Я попробую доработать.
То есть, я могу удалить “git clone /github…docker” из файла app.yaml?
И пересобрать его?

Я бы задал такие вопросы в теме для разработчиков Docker. На данный момент я бы не стал менять скрипты «из коробки», используемые для поддержки разработки на Docker, если у вас нет очень веской причины; скорее всего, они созданы, чтобы помочь вам.

Понимаю вас. Спасибо.