Установка Discourse с помощью Portainer

Я использую Portainer для управления своими контейнерами. Я хотел установить Discourse в новый контейнер, но у меня не получается. Буду признателен, если кто-нибудь сможет помочь.

ЧТО Я ПОПРОБОВАЛ?
Я прочитал файл на GitHub и попытался следовать инструкциям, но не смог запустить консольные команды, так как ещё не создал контейнер. Поэтому я создал/клонировал образ Discourse из Docker Hub и установил его через Portainer, но при запуске он завершается с кодом ошибки 0.

Почему эта установка не поддерживается, @rishabh? Portainer — это просто панель управления Docker.

Поскольку они поддерживают только один тип установки — на чистой VPS, где все модификации и скрипты работают без проблем. Всё остальное считается кастомной установкой, и они не будут её поддерживать, так как способов использования контейнеров бесконечно много.

Чтобы установить Discourse, необходимо выполнить процесс инициализации с помощью утилиты launcher. Если вы можете добавлять скрипты в Portainer, это должно быть относительно несложно. Или же вы можете просто установить Discourse на VPS и перенести полученный контейнер, чтобы проверить, работает ли это.

Другой, возможно более простой способ — разделить все компоненты и развернуть их по отдельности. Это означает (список не является исчерпывающим):

  • PostgreSQL
  • Redis
  • Unicorn
  • Discourse

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

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

Для обсуждения см. Может ли Discourse выпускать частые образы Docker, которые не требуют начальной настройки?.

Простое решение, по которому вы можете получить бесплатную помощь, — следовать официальным инструкциям по установке. Если вам нужна помощь с Portainer и у вас есть бюджет, вы можете задать вопрос в Marketplace или связаться со мной. Я не знаком с Portainer, но создавал контейнеры для запуска с помощью других инструментов.

Не хочу выглядеть некомпетентно, но где находится эта утилита запуска? Я искал в пути /discourse в образе Docker, который загрузил, но не нашёл никаких скриптов… возможно, я смотрю не туда? Вероятно, просто запущу стандартный контейнер Ubuntu и настрою всё сам для теста, как при обычной установке?

Нашёл такие инструкции:

Рекомендуемый способ получения образа Docker Bitnami Discourse — загрузить готовый образ из реестра Docker Hub.

docker pull bitnami/discourse:latest

Чтобы использовать конкретную версию, можно загрузить образ с тегом версии. Список доступных версий можно посмотреть в реестре Docker Hub.

docker pull bitnami/discourse:[TAG]

При желании вы также можете собрать образ самостоятельно, клонировав репозиторий, перейдя в каталог, содержащий файл Dockerfile, и выполнив команду docker build. Не забудьте заменить плейсхолдеры путей APP, VERSION и OPERATING-SYSTEM в примере ниже на соответствующие значения.

git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM
docker build -t bitnami/APP:latest .

Как использовать этот образ

Для хранения данных Discourse требуется доступ к базе данных PostgreSQL. Для выполнения требований базы данных мы будем использовать образ Docker Bitnami для PostgreSQL.

Использование командной строки Docker

Шаг 1: Создание сети

docker network create discourse-network

Шаг 2: Создание тома для персистентности PostgreSQL и запуск контейнера PostgreSQL

$ docker volume create --name postgresql_data
docker run -d --name postgresql \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env POSTGRESQL_USERNAME=bn_discourse \
  --env POSTGRESQL_PASSWORD=bitnami123 \
  --env POSTGRESQL_DATABASE=bitnami_discourse \
  --network discourse-network \
  --volume postgresql_data:/bitnami/postgresql \
  bitnami/postgresql:latest

Шаг 3: Создание тома для персистентности Redis и запуск контейнера Redis

$ docker volume create --name redis_data
docker run -d --name redis \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --network discourse-network \
  --volume redis_data:/bitnami/redis \
  bitnami/redis:latest

Шаг 4: Создание томов для персистентности Discourse и запуск контейнера

$ docker volume create --name discourse_data
docker run -d --name discourse \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env DISCOURSE_DATABASE_USER=bn_discourse \
  --env DISCOURSE_DATABASE_PASSWORD=bitnami123 \
  --env DISCOURSE_DATABASE_NAME=bitnami_discourse \
  --env DISCOURSE_HOST=www.example.com \
  --network discourse-network \
  --volume discourse_data:/bitnami/discourse \
  bitnami/discourse:latest

Шаг 5: Запуск контейнера Sidekiq

docker run -d --name sidekiq \
  --network discourse-network \
  --volume discourse_data:/bitnami/discourse \
  bitnami/discourse:latest /opt/bitnami/scripts/discourse-sidekiq/run.sh

Доступ к вашему приложению осуществляется по адресу http://ваш-ip/

Запуск приложения с помощью Docker Compose
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/discourse/docker-compose.yml > docker-compose.yml
docker-compose up -d

Обратите внимание: этот файл не проходил внутреннее тестирование. Поэтому мы рекомендуем использовать его исключительно для целей разработки или тестирования. Для развёртываний в производственной среде настоятельно рекомендуем использовать связанный Helm-чарт Bitnami.

Если вы обнаружите какие-либо проблемы в файле docker-compose.yaml, вы можете сообщить о них или внести исправление, следуя нашим правилам внесения вкладов.

Устранение неполадок в Discourse

Если вам нужно выполнить административные команды для Discourse, такие как создание учётной записи администратора из консоли, вы можете сделать это, запустив оболочку внутри контейнера и выполнив команду с соответствующими переменными окружения.

cd /opt/bitnami/discourse
RAILS_ENV=production bundle exec rake admin:create