Я запускаю Discourse на AWS ECS. При попытке запустить приложение вкладка консоли в браузере выдаёт ошибку с указанными ниже URL-адресами. Не упустил ли я какое-то изменение конфигурации?
Я указал этот конечный адрес в файле database.yml.
Я развернул Discourse в ECS с использованием Docker. При попытке получить доступ к приложению браузер запрашивает ресурсы по следующим URL-адресам вместо https://discuss-stage.tllms.com/.
Я ставлю на неправильно настроенный CDN.
Можешь поделиться своим config/discourse.conf?
И поищи на своих настройках сайта c0fbtc — посмотри, есть ли совпадения.
Кажется, что-то не так. На вашем месте я бы проверил, не является ли моя база данных локальной и не имеет ли она странное имя.
Я думаю, это должно выглядеть так:
# адрес хоста для сервера БД
# Это установлено в пустое значение, чтобы сначала попытаться использовать сокеты
db_host = discourse-test.c0fbtc1q6bvm.ap-south-1.rds.amazonaws.com
# имя базы данных, на которой работает Discourse
db_name = default
Я должен предупредить вас: пытаться изобретать велосипед, который уже отлично работает, — не лучшая идея. Кроме того, некоторые участники здесь вряд ли с энтузиазмом поддержат вас, поскольку это не принесёт пользы сообществу.
В любом случае, в итоге вы должны убедиться, что эти значения корректно записаны в вашем файле discourse.conf. Если вы редактировали его вручную, хотя бы укажите хост AWS в параметре db_host и оставьте db_name равным default.
Я из той же команды, что и Вайджай. Конкретный сценарий, который мы здесь пытаемся реализовать, — это форк Discourse и размещение его в корпоративном GitHub. Оттуда мы собираем образ и разворачиваем его в AWS. Мы хотим разместить его в нашем GitHub, чтобы сохранить гибкость внесения изменений в соответствии с нашими требованиями. Мы хотели бы вносить вклад обратно, где это возможно. Поскольку мы не нашли Dockerfile в публичном репозитории Discourse, мы создали свой собственный для сборки Docker-образа. Кроме того, мы используем GitHub Actions для развёртывания Docker-образа в сервис AWS ECS.
Учитывая наши требования, как вы думаете, могли бы мы использовать какой-либо другой подход?
Да. Моя рекомендация — использовать официальные репозитории discourse и discourse_docker и реализовывать все изменения в виде плагинов.
Использование официального discourse_docker избавит вас от проблем, подобных той, что описана в этой теме. Кроме того, отказ от форка Discourse и сохранение всех ваших модификаций в отдельных плагинах позволит избежать отклонения от основной ветки и избавит от необходимости прилагать огромные усилия для переноса всех изменений из исходного кода обратно в ваш форк.
Кривая обучения разработке плагинов окупится уже через несколько недель по сравнению с затратами на слияние изменений из исходного репозитория, а в дальнейшем это окажется ещё более эффективным.
При использовании официального репозитория Discourse вы также можете рассмотреть вариант управляемого хостинга, и специалисты будут более охотно (и/или по более низкой цене) готовы помочь вам.
Спасибо за ваши отзывы. У меня есть несколько уточняющих вопросов:
При использовании подхода с плагинами существует ли вероятность того, что мы столкнемся с узким местом по некоторым требованиям, которые невозможно реализовать через плагины? Например, управление ролями пользователей очень кастомизированным образом?
Как будет выглядеть сквозной конвейер (end-to-end pipeline), если мы возьмем discourse_docker и развернем его в нашей учетной записи AWS на ECS? Как я уже упоминал, в настоящее время мы используем GitHub Actions для развертывания в ECS в нашей учетной записи AWS. Какую стратегию развертывания мы можем использовать из публичного репозитория, при этом защищая наши учетные данные AWS?
Всегда начинайте с копии репозитория discourse_docker. Создайте в нём файл app.yml.
Используйте подкоманду bootstrap скрипта launcher в вашей рабочей копии discourse_docker для создания образа Docker. Загрузите образ Docker в репозиторий Docker. Разверните этот образ Docker в любом удобном вам месте.
Создавайте плагины, если это необходимо. Укажите ваши кастомные плагины в файле app.yml так же, как и другие плагины.
@ashish_rawat@Vijay_Vantipalli Как вы настроили Discourse в Docker на ECS? Когда я запускаю на сервере EC2, Discourse работает нормально. Но когда я загружаю образ Docker с Discourse в реестр ECR и создаю задачу на основе этого образа, контейнер не запускается — я получаю код выхода 1. Я уже застрял на этом более недели. Буду рад получить ваши советы. Спасибо!
Для этого я создал отдельный экземпляр RDS и кластер ElastiCache для Redis.
Спасибо за быстрый ответ! Думаю, я просто упускаю что-то очевидное. Попробую это сделать.
Извините, если это выходит за рамки вашей компетенции. Я попытался добавить «-e», который нашёл в приложении start-cmd, но есть и другие аргументы, например: