Начал экспериментировать с мульти-сайтовой версией Discourse и задумался: вместо того чтобы определять сайты в файле app.yml через хуки, можно ли вынести это в отдельный внешний файл (например, multisite.yml, размещённый на хост-сервере VPS, а не внутри Docker-контейнера, чтобы его можно было настраивать с хоста)? Или, возможно, использовать sh-скрипт, который будет определять форумы Discourse в таблице базы данных?
Также хотел бы узнать, есть ли какая-то команда или способ добавить новый сайт без пересборки всего приложения?
hooks:
after_postgres:
# Это нужно как-то настроить для каждой базы данных сайта вместо b_discourse
- 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.