Удалось ли кому-то запустить Discourse в AWS ECS или аналогичной среде?

Я читал обсуждения, подобные этому, и другим, и, судя по всему, на данный момент нет простого способа запустить образ Discourse в такой среде, как ECS, GKE или любой другой оркестратор контейнеров, и при этом чтобы всё работало без проблем…

Я использую Terraform для управления кластером Elasticache, экземпляром RDS и кластером ECS. Мне просто хочется иметь возможность сказать: «Вот мой образ Discourse, а вот переменные окружения для подключения к Postgres, Redis, SMTP и т. д.».

Существует ли что-то подобное в 2020 году? Похоже, что во всех предыдущих обсуждениях этой темы не было найдено удовлетворительного решения, и мы по-прежнему вынуждены полагаться на собственные скрипты Discourse, которые противоречат стандартам работы с контейнерами и нарушают совместимость с общепринятыми подходами к использованию контейнеров…

Я отвечал на похожий вопрос два дня назад

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

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

Почему тогда требуется этот странный скрипт инициализации (bootstrap), который запускает контейнеры и выступает в роли оркестратора?

Почему образ Discourse не может принимать переменные окружения, а в точке входа (entrypoint) самостоятельно подключаться ко всем необходимым ресурсам, создавать требуемые таблицы и так далее? Другие сервисы и веб-приложения, полагающиеся на внешние уровни хранения данных, успешно контейнеризированы именно таким образом. Вы просто размещаете их в ECS, EKS или любой другой системе, указываете, где находится база данных, и всё работает отлично. Возможно ли это с Discourse?

Дело в том, что мы — полная противоположность: некоммерческая организация без огромного бюджета, поэтому мы хотим максимально снизить затраты, разместив все наши корпоративные приложения на одном хосте AWS ECS. Но для этого отдельные приложения должны быть аккуратно контейнеризированы и определены как задачи (task definitions) в ECS, то есть представлять собой самодостаточные образы Docker.

Ну, отчасти — учитывая, что Discourse легко размещается на VPS за 5 долларов в месяц как простой образ для установки через Docker, не уверен, что экономия нескольких копеек на этой сумме, сопряженная с огромным усложнением установки и повышением сложности поддержки, того стоит? Оставляйте всё простым!

Как описано в ссылке выше, вы можете создавать контейнеры и запускать их с помощью Kubernetes. Я выполнял развертывания в GKE для некоторых клиентов, которые настаивали на этом, так как были привязаны к этой платформе.

Если ваша цель — сэкономить деньги, то вариант за 5–10 долларов в месяц — это то, что нужно.

Наши инструменты оптимизированы для самой распространённой категории пользователей: небольших групп, не имеющих специализированного ИТ-отдела для управления оркестрацией контейнеров.

Тем не менее, необходимые компоненты доступны, если вы хотите перейти на полную облачную модель. Исходный репозиторий, который стоит изучить:

Файл samples/web_only.yml в нём демонстрирует, как использовать внешние ресурсы.

Скрипт launcher также способен создавать пользовательский образ Docker с помощью подкоманды bootstrap.