Самохостинг Discourse с использованием Docker Compose

Всем привет! :blush:

Надеюсь, у всех вас всё хорошо! У меня есть вопрос по Discourse: возможно ли разместить Discourse на собственном сервере? Мне очень интересна эта платформа, и я бы хотел узнать, есть ли у кого-то здесь опыт работы с ней. Есть ли какие-то особые требования или советы, которые стоит учитывать?

Заранее спасибо за помощь! :folded_hands:

Да, и для этого есть отдельная подкатегория!:

Documentation > Self-Hosting

Вам стоит ознакомиться со статьёй об стандартной установке.

Спасибо большое за ваши ответы!

Я хотел бы иметь отдельный файл ‘docker-compose’, который я мог бы запустить и использовать Discourse в нашей ассоциации.

Это возможно?

Я не люблю запускать множество скриптов в фоновом режиме, которые мне не знакомы.

Да, это возможно, но вам придётся написать и поддерживать это самостоятельно.

Вот Dockerfile, который кто-то недавно опубликовал для разработки и который может послужить отправной точкой:

Discourse — это проект с открытым исходным кодом. Почему бы не прочитать скрипты запуска и шаблоны? (Это также поможет вам составить Compose-файл)

Это не поддерживается официально, однако ведутся усилия по синхронизации с основной веткой Discourse. Вы можете поискать Docker Compose здесь или обратиться к этим двум вариантам:

Однако будьте осторожны: поддержка Discourse при обновлении версий может оказаться сложной задачей. Но IndieHosters занимаются этим уже несколько лет.

Оба проекта используют оригинальный образ Docker Discourse/base, но я не уверен, что они настраивают установку так же, как @sam в pups для discourse-docker.

Спасибо за ваши ответы!

Я установил только образ discourse/base, но контейнер завершил работу без логов
На изображении показан интерфейс командной строки, отображающий контейнер с именем "discourse-container" в среде Docker, который недавно завершился без запущенных процессов.

Вы знаете, почему это произошло?

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

Процедура установки Discourse не очень распространена, но за годы работы мне очень понравился этот подход по одной причине, которую вы оцените только после того, как поработаете администратором какое-то время. А именно — возможность обновлять его после каждого коммита в исходный код. Это невероятно. Вы сообщаете об ошибке (bug), и уже через час проблема может быть решена командой или сообществом: запускаются автоматические тесты, коммит сливается и становится доступным. И вы можете сразу же обновиться, потому что перекомпилируете свой Discourse на основе последней версии исходного кода.

Поэтому не существует образа, в котором была бы заранее скомпилирована какая-то конкретная версия. Вы получаете «пустой» образ и компилируете свою версию с нужной точки, используя необходимый набор плагинов. И это всё ещё работает!

Такой гибкости вы не найдёте больше нигде.

Так что я не уверен, но если вы хотите создать файл docker compose, вам нужно будет воспроизвести процедуру скрипта ./launcher внутри этого файла, чтобы скомпилировать отдельный образ, который затем можно просто подключить. Однако встроенный механизм обновления в таком случае не сработает. Вам придётся самостоятельно собирать новую версию.

Спасибо за вашу помощь, ребята. Благодаря вам новичкам вроде меня легко работать с Discourse!

Да, но прежде чем я предоставлю Discourse своему клубу, я хотел бы запустить его на localhost и провести несколько тестов, чтобы лучше разобраться в административном интерфейсе и командной строке Discourse. Если возникнут ошибки, я смогу их исправить. Для «поддерживаемой» версии требуется запись DNS и порты 443 и 80, что в моём случае излишне — по крайней мере, так мне кажется.

Не знает ли кто-нибудь, как обойти это ограничение и запустить Discourse на localhost?

Установите Docker и просто выполните это.

Да:

https://meta.discourse.org/tags/c/documentation/developer-guides/56/dev-install

:slight_smile:

Или так. Хотя я понял, что Максу интересно узнать, как это работает в продакшене, но протестировать локально перед покупкой хостинга. Для этого более подходящим будет настройка Docker. Чтобы фактически исправить ошибки, правильным выбором является настройка разработки.

Ребята, огромное спасибо за вашу поддержку!

Мне удалось заставить это работать с «обычной» установкой через Docker.