DiscourseをPortainerでインストール

Portainer を使ってコンテナを管理しています。新しいコンテナに Discourse をインストールしたいのですが、うまくいきません。お手伝いいただける方がいれば幸いです。

試したこと
GitHub ファイルを読んで手順に従おうとしましたが、コンテナを作成していないため、コンソールコマンドを実行できませんでした。そこで DockerHub から Discourse のイメージをクローンして Portainer でインストールしましたが、起動すると「エラーコード 0 で終了」と表示されます。

なぜこのインストールはサポートされていないのですか、@rishabh?Portainer は単なる Docker 制御パネルです。

なぜなら、彼らがサポートしているのはクリーンな VPS 上でのみ動作する 1 つのインストールタイプだけだからです。その環境であれば、すべての変更やスクリプトに問題なく実行できます。それ以外はカスタムインストールとなり、コンテナの使い方は無限にあるため、サポート対象外となります。

Discourse をインストールするには、launcher ユーティリティを介してブートストラップを実行する必要があります。Portainer にスクリプトを追加できるなら、比較的簡単に実施できるはずです。あるいは、Discourse を VPS にインストールし、生成されたコンテナをプッシュして動作確認をする方法もあります。

より簡単な別の方法として、すべてのコンポーネントを分離して個別にデプロイするという選択肢もあります(以下は完全なリストではありません):

  • PostgreSQL
  • Redis
  • Unicorn
  • Discourse
「いいね!」 1

はい、公式インストールを 1 つに限定しているのは、コミュニティがそれを適切にサポートできるようにするためです。もし複数あれば、全員が質の高いトラブルシューティングやセットアップのアドバイスを提供することが難しくなります。

「いいね!」 4

必要な手順は、./launcher を使用してコンテナをビルドし、その後 Portainer を使用して起動する際に必要なすべての環境変数を渡すことです。

詳細な議論については、Discourse はブートストラップ不要な Docker イメージを頻繁に配布できるか? をご覧ください。

無料でサポートを受けられる簡単な解決策は、公式のインストール手順に従うことです。Portainer に関するサポートが必要で予算がある場合は、Marketplace で質問するか、私までご連絡ください。私は Portainer には詳しくありませんが、他のツールで起動するためのコンテナを構築した経験はあります。

「いいね!」 1

インテリジェントに見られたくないのですが、このランチャーユーティリティはどこにありますか?プルしたDockerイメージの /discourse パスを見ていましたが、スクリプトが見つかりませんでした…また、見間違えているのでしょうか?テストのために、標準的なUbuntu Dockerコンテナを実行して、すべて自分で構成するつもりですか?標準インストールのように?

以下のような手順が見つかりました。

Bitnami Discourse Docker Image を取得する推奨方法は、Docker Hub Registry から事前ビルドされたイメージをプルすることです。

docker pull bitnami/discourse:latest

特定のバージョンを使用するには、バージョンタグをプルできます。Docker Hub Registry で利用可能なバージョンのリストを確認できます。

docker pull bitnami/discourse:[TAG]

必要に応じて、リポジトリをクローンし、Dockerfile を含むディレクトリに変更して docker build コマンドを実行することで、自分でイメージをビルドすることもできます。以下の例のコマンドで、APPVERSIONOPERATING-SYSTEM のパスプレースホルダーを正しい値に置き換えることを忘れないでください。

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

このイメージの使用方法

Discourse は、情報を保存するために PostgreSQL データベースへのアクセスが必要です。データベースの要件には、Bitnami PostgreSQL Docker Image⁠ を使用します。

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://your-ip/ でアクセスします。

Docker Compose を使用してアプリケーションを実行する
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/discourse/docker-compose.yml > docker-compose.yml
docker-compose up -d

このファイルは内部テストを受けていないことに注意してください。したがって、開発またはテスト目的でのみ使用することをお勧めします。本番環境へのデプロイには、関連する Bitnami Helm chart⁠ を使用することを強く推奨します。

docker-compose.yaml ファイルに問題が見つかった場合は、Contributing Guidelines⁠ に従って報告するか、修正に貢献してください。

Discourse のトラブルシューティング

コンソールから管理者アカウントを作成⁠ のような Discourse 管理コマンドを実行する必要がある場合は、コンテナ内でシェルを実行し、適切な環境変数で実行できます。

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