بدأتُ بالتجريب مع نسخة متعددة المواقع من ديسكورد (Discourse)، وتساءلتُ: بدلاً من تعريف المواقع في ملف app.yml عبر الخطافات (hooks)، هل توجد طريقة لجعل هذا الملف خارجيًا (مثل multisite.yml، ولكن على خادم VPS المضيف وليس داخل حاوية Docker، بحيث يكون قابلًا للتكوين من المضيف على الأقل)؟ أو هل يمكن لملف sh تعريف منتديات ديسكورد في جدول قاعدة بيانات؟
أود أيضًا أن أعرف: هل توجد أمر سطر أو شيء مشابه يمكنني تشغيله لإضافة موقع جديد دون إعادة بناء التطبيق بالكامل؟
hooks:
after_postgres:
# يجب تعيين هذا لكل قاعدة بيانات موقع (sitedb) بطريقة ما بدلاً من 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
المواقع المتعددة في ديسكورد جديدة بالنسبة لي، لكنني قمت بإعداد مواقع متعددة في ميدياويكي (MediaWiki) وأشعر بالراحة في ذلك.