Я всё ещё изучаю, как установить Discourse для моей внутренней сообщества. Ранее я спрашивал о том, как установить Discourse с внешним Redis и внешним Postgres, а также как управлять всем этим в кластере Kubernetes. Подробную информацию можно найти здесь.
Теперь у меня возник ещё один вопрос, так как мне сказали, что мне также нужно создать свой собственный образ контейнера для использования с Helm при развёртывании. Из-за этого я не смогу выполнить установку по официальной документации, используя скрипты, предоставленные в руководстве по облачной установке.
Я попытался создать свой собственный образ с помощью команды bootstrap, но не могу запустить образ Docker самостоятельно, так как он ищет шаблоны Ruby и выдаёт ошибку.
Возможно ли запустить образ контейнера без использования предоставленных скриптов? Мне кажется, мне нужна небольшая помощь, так как я попытался изучить bash-скрипт, но он кажется мне слишком сложным. Я надеялся, что кто-то другой сталкивался с подобной ситуацией и, возможно, сможет дать мне совет.
Для предоставления дополнительного контекста и деталей:
Я использовал скрипт запуска с командой bootstrap, чтобы создать свой собственный образ с моими настройками.
Затем в документации указано, что нужно запустить скрипт запуска с командой run, чтобы создать контейнер из образа.
Изучив код скрипта, я обнаружил, что команда docker выглядит следующим образом:
Однако я не смог преобразовать все эти переменные в команду, которую мог бы выполнить самостоятельно без скрипта. Возможно, весь этот путь, который я выбрал, изначально был неверным, но я хотел попробовать решить задачу самостоятельно, прежде чем обращаться за помощью, чтобы не беспокоить никого.
Когда я пытаюсь запустить образ 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>'
Discourse зависит от PostgreSQL, работающего в общем томе; и множество других важных файлов находятся в этом общем томе (изображения, загруженные файлы, резервные копии, логи и многое другое).
Если вы поддерживаете целостность файловой системы тома /shared в соответствии со стандартами конфигурации Discourse, то вы можете легко запускать и останавливать образ Docker и приложение контейнера Discourse; однако вы не можете собрать приложение (насколько мне известно) без скриптов Discourse (если только вы не проведете полную реверс-инженерию скриптов и не напишете собственный скрипт на основе полностью рабочих и поддерживаемых скриптов), поскольку скрипты отвечают за создание сложного одностраничного приложения (SPA) на EmberJS (клиентская технология) поверх Ruby on Rails (серверная технология), не говоря уже об управлении конфигурацией основного приложения и всех плагинов. Честно говоря, это довольно сложное приложение.
Да, вы можете запустить контейнер Discourse или создать контейнер Discourse из образа Discourse без каких-либо скриптов, если (и только если) у вас уже есть полностью рабочий образ Docker Discourse, соответствующий стандартам конфигурации Discourse, включая требования к постоянному хранению для базы данных, изображений и загрузок, резервных копий, файлов логов и т. д. В общем томе требуется множество важных файлов для Discourse; поэтому нельзя просто «взять стандартный образ Docker Discourse» и запустить его без всех вышеупомянутых необходимых предварительных условий (и не все было упомянуто выше!)
Спасибо за ответ, это очень полезно Вчера я читал о том, зачем нужны скрипты, в этой теме и в нескольких других.
Ещё раз спасибо за подробное объяснение. Вся эта информация помогает мне понять, как создать собственный рабочий процесс, соответствующий необходимым стандартам
Это может быть очень запутанным для любого, кто (1) не является разработчиком Ruby on Rails и (2) не является разработчиком EmberJS.
По сути, вы создаёте Docker-контейнеризированное продакшн-приложение на Ruby on Rails (серверная часть), которое служит основой для SPA-приложения на EmberJS мирового уровня (основное пользовательское приложение). Кроме того, вы получаете полноценную систему управления конфигурацией с открытым исходным кодом для всего исходного кода, поддерживаемую очень талантливыми и опытными веб-специалистами, которые уже давно работают в этой среде. Плюс ко всему, вы можете воспользоваться профессиональным хостингом и индивидуальной разработкой в рамках экосистемы бизнеса Discourse.
Только что наткнулся на это. Вы имеете в виду, что я не могу запускать приложение и базу данных на физически разных хостах, которые вообще ничего не разделяют?