Discourse のマルチサイトインスタンスでいろいろ試してみているのですが、app.yml のフックでサイト定義をする代わりに、外部ファイル(Docker コンテナ内ではなくホスト VPS 上の multisite.yml のようなもの、少なくともホスト側から設定可能)として定義する方法はないでしょうか。あるいは、sh ファイルでデータベースのテーブルに Discourse フォラムを定義する方法はないでしょうか。
また、アプリ全体を再構築することなく新しいサイトを追加するためのコマンドラインや手段はあるでしょうか。
hooks:
after_postgres:
# ここでは b_discourse ではなく、各サイト DB ごとに設定する必要があります
- exec: sudo -u postgres createdb b_discourse || exit 0
- exec:
stdin: |
grant all privileges on database b_discourse to discourse;
cmd: sudo -u postgres psql b_discourse
raise_on_fail: false
- exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "alter schema public owner to discourse;"'
- exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists hstore;"'
- exec: /bin/bash -c 'sudo -u postgres psql b_discourse <<< "create extension if not exists pg_trgm;"'
after_code:
- exec:
cd: $home/plugins
cmd:
- mkdir -p plugins
- git clone https://github.com/discourse/docker_manager.git
before_bundle_exec:
- file:
path: $home/config/multisite.yml
contents: |
secondsite:
adapter: postgresql
database: b_discourse
pool: 25
timeout: 5000
host_names:
- sub.domain.tld
after_bundle_exec:
- exec: cd /var/www/discourse && sudo -H -E -u discourse bundle exec rake multisite:migrate
Discourse のマルチサイトは初めてですが、MediaWiki のマルチサイトは設定したことがあり、慣れています。