Можно ли установить Discourse без предоставленных скриптов?

Всем привет,

Снова обращаюсь к вам с необычным вопросом :sparkles:

Я всё ещё изучаю, как установить Discourse для моей внутренней сообщества. Ранее я спрашивал о том, как установить Discourse с внешним Redis и внешним Postgres, а также как управлять всем этим в кластере Kubernetes. Подробную информацию можно найти здесь.

Теперь у меня возник ещё один вопрос, так как мне сказали, что мне также нужно создать свой собственный образ контейнера для использования с Helm при развёртывании. Из-за этого я не смогу выполнить установку по официальной документации, используя скрипты, предоставленные в руководстве по облачной установке. :cold_sweat:

Я попытался создать свой собственный образ с помощью команды bootstrap, но не могу запустить образ Docker самостоятельно, так как он ищет шаблоны Ruby и выдаёт ошибку.

Возможно ли запустить образ контейнера без использования предоставленных скриптов? Мне кажется, мне нужна небольшая помощь, так как я попытался изучить bash-скрипт, но он кажется мне слишком сложным. Я надеялся, что кто-то другой сталкивался с подобной ситуацией и, возможно, сможет дать мне совет.

Ещё раз спасибо за всё :revolving_hearts:

Для предоставления дополнительного контекста и деталей:
Я использовал скрипт запуска с командой bootstrap, чтобы создать свой собственный образ с моими настройками.
Затем в документации указано, что нужно запустить скрипт запуска с командой run, чтобы создать контейнер из образа.
Изучив код скрипта, я обнаружил, что команда docker выглядит следующим образом:

$docker_path run --shm-size=512m $links $attach_on_run $restart_policy "${env[@]}" "${labels[@]}" -h "$hostname" \
        -e DOCKER_HOST_IP="$docker_ip" --name $config -t "${ports[@]}" $volumes $mac_address $user_args \
        $run_image $boot_command

Однако я не смог преобразовать все эти переменные в команду, которую мог бы выполнить самостоятельно без скрипта. Возможно, весь этот путь, который я выбрал, изначально был неверным, но я хотел попробовать решить задачу самостоятельно, прежде чем обращаться за помощью, чтобы не беспокоить никого.

Когда я пытаюсь запустить образ docker самостоятельно, контейнер завершает работу, и в логах я вижу следующее:

Already up to date.
INFO -- : Loading --stdin
/pups/lib/pups/config.rb:23:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
	from /pups/lib/pups/cli.rb:27:in `new'
	from /pups/lib/pups/cli.rb:27:in `run'
	from /pups/bin/pups:8:in `<main>'

Попробуйте запустить ./launcher start-cmd app

Спасибо, это было очень полезно :sparkling_heart:

Эта команда была в документации? Если да, то извините за вопрос, я её не заметил.

Огромное спасибо за постоянную помощь :sparkles:

Discourse зависит от PostgreSQL, работающего в общем томе; и множество других важных файлов находятся в этом общем томе (изображения, загруженные файлы, резервные копии, логи и многое другое).

Если вы поддерживаете целостность файловой системы тома /shared в соответствии со стандартами конфигурации Discourse, то вы можете легко запускать и останавливать образ Docker и приложение контейнера Discourse; однако вы не можете собрать приложение (насколько мне известно) без скриптов Discourse (если только вы не проведете полную реверс-инженерию скриптов и не напишете собственный скрипт на основе полностью рабочих и поддерживаемых скриптов), поскольку скрипты отвечают за создание сложного одностраничного приложения (SPA) на EmberJS (клиентская технология) поверх Ruby on Rails (серверная технология), не говоря уже об управлении конфигурацией основного приложения и всех плагинов. Честно говоря, это довольно сложное приложение.

Да, вы можете запустить контейнер Discourse или создать контейнер Discourse из образа Discourse без каких-либо скриптов, если (и только если) у вас уже есть полностью рабочий образ Docker Discourse, соответствующий стандартам конфигурации Discourse, включая требования к постоянному хранению для базы данных, изображений и загрузок, резервных копий, файлов логов и т. д. В общем томе требуется множество важных файлов для Discourse; поэтому нельзя просто «взять стандартный образ Docker Discourse» и запустить его без всех вышеупомянутых необходимых предварительных условий (и не все было упомянуто выше!)

Надеюсь, это поможет.

Спасибо за ответ, это очень полезно :slight_smile: Вчера я читал о том, зачем нужны скрипты, в этой теме и в нескольких других.

Ещё раз спасибо за подробное объяснение. Вся эта информация помогает мне понять, как создать собственный рабочий процесс, соответствующий необходимым стандартам :slight_smile:

Пожалуйста.

Это может быть очень запутанным для любого, кто (1) не является разработчиком Ruby on Rails и (2) не является разработчиком EmberJS.

По сути, вы создаёте Docker-контейнеризированное продакшн-приложение на Ruby on Rails (серверная часть), которое служит основой для SPA-приложения на EmberJS мирового уровня (основное пользовательское приложение). Кроме того, вы получаете полноценную систему управления конфигурацией с открытым исходным кодом для всего исходного кода, поддерживаемую очень талантливыми и опытными веб-специалистами, которые уже давно работают в этой среде. Плюс ко всему, вы можете воспользоваться профессиональным хостингом и индивидуальной разработкой в рамках экосистемы бизнеса Discourse.

Разве это не круто? :slight_smile:

Только что наткнулся на это. Вы имеете в виду, что я не могу запускать приложение и базу данных на физически разных хостах, которые вообще ничего не разделяют?

Для меня это было бы полным препятствием…

Нет, это не так. Запуск Discourse с выделенной внешней базой данных является поддерживаемым и документированным сценарием.