Running Discourse on Docker for Mac

Here’s the PR :wink:

I know; I too have spent too much time debugging docker-sync than I care to admit. This new approach, albeit not as fast, requires zero additional effort to setup and is quite stable from my own experiences!

Наконец-то я установил Discourse на свой Mac, но это просто кошмарная медлительность… загрузка страницы занимает супер долго (20 секунд).
Так что мой вопрос:

  1. Это проблема Docker или проблема кода Discourse?

У кого-то ещё есть такая же проблема?

Это проблема с Docker для Mac. Настройка Discourse нативно на вашем Mac для разработки значительно улучшит производительность.

Возможно, Discourse вообще не должен использовать Docker? Я не вижу в этом преимуществ. Серьезно, это просто лишний слой, и отладка контейнеров превратится в ад. Просто так, к слову.

Docker стандартизирует окружение вокруг работающего приложения и изолирует его от хоста.

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

Docker приводит к незначительной потере производительности в Linux (признано, более ощутимой на Mac), но преимущества огромны для такого проекта с открытым исходным кодом, как этот, с распределённой командой разработчиков и тысячами самохостинговых экземпляров.

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

Я не использую Docker в своей среде разработки (хотя у меня Ubuntu). На самом деле, делать это так, как делаю я, скорее всего, даже больше работы, так как пересборка с нуля — это сплошная головная боль.

В ответ тебе, @cmoi,

Только что установил новую среду для разработки на Mac (для разработки, см. пост #44 выше), и всё работает очень быстро. Никаких проблем.

Что касается твоего другого вопроса:

@cmoi пишет…
Может, Discourse вообще не должен использовать Docker? Я не вижу преимуществ. Честно говоря, это просто лишний слой, и отладка контейнеров превратится в кошмар. Просто моё мнение.

Мы используем Discourse в Docker на продакшене и в staging-среде, и это отлично. Одна из причин в том, что настройка в Docker занимает гораздо меньше времени и усилий по сравнению с установкой «на голое железо». Кроме того, восстановление после сбоя сервера в Docker намного проще.

Так что причин запускать Discourse в Docker (на продакшене) множество — без сомнений.

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