الانتقال من حاوية مستقلة إلى حاويات ويب وبيانات منفصلة

أنا أحاول تطبيق الحاويات المنفصلة، ولكن مع قاعدة بيانات عن بعد. لقد اتبعت التعليمات المذكورة أعلاه والدليل الإرشادي لإعداد قاعدة بيانات PostgreSQL عن بعد. يعمل الإعداد، لكنني أتساءل لماذا توجد مرجعان متطابقان (تحت web_only و data) لنفس قاعدة البيانات. هذا يجعلني أعتقد أنني أقوم بشيء خاطئ وأن حاوية web_only لا تستخدم حاوية البيانات حتى.

هل أقوم بذلك بشكل صحيح؟

إليك إعدادي.

تحت web_only.yml أضفت:

  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: REMOVE
  DISCOURSE_DB_PASSWORD: REMOVE
  DISCOURSE_DB_HOST: xxx.ondigitalocean.com
  DISCOURSE_DB_NAME: REMOVE
  DISCOURSE_DB_PORT: 25060
  DISCOURSE_DB_BACKUP_PORT: 25060
  DISCOURSE_REDIS_HOST: data

تحت data.yml

أزلت postgres.template.yml

templates:
#  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"

كما أضفت ما يلي:

env:
  # تأكد من وجود اللغة في الحاوية، قد تحتاج إلى تثبيتها
  LANG: en_US.UTF-8
  DISCOURSE_DB_USERNAME: REMOVE
  DISCOURSE_DB_PASSWORD: REMOVE
  DISCOURSE_DB_HOST: REMOVE.ondigitalocean.com
  DISCOURSE_DB_NAME: REMOVE
  DISCOURSE_DB_PORT: 25060
  DISCOURSE_DB_BACKUP_PORT: 25060

إذا كنت تستخدم قاعدة بيانات عن بُعد، فلا تحتاج إلى إنشاء حاوية البيانات التي تحتوي على قاعدة بيانات. يرجى ملاحظة أنك تحتاج إلى كل من postgres و redis (لذلك قد تحتاج إلى حاوية البيانات لهذا الغرض).

إعجاب واحد (1)

لكن هنا لدي حاوية واحدة فقط تعمل دون أي أخطاء.

لا أعرف حقًا ما الذي تقصده بـ “حاويتين”، ولكن إذا افترضت أن الحاويتين تعنيان مثيلين منفصلين من Discourse، فأنت تنظر في الاتجاه الخاطئ.

تساعد هذه المقالة في إعداد حاوية تطبيق وقاعدة بيانات منفصلة، وهو ما يفيد المستخدمين المتقدمين الذين يبحثون عن بعض المرونة.

إذا كنت ترغب في تثبيت أو استضافة موقعين Discourse على نفس الجهاز، فربما تنظر إلى وضع Discourse متعدد المواقع:
Multisite configuration with Docker

إعجاب واحد (1)

ما أعنيه بالحاوية هو أنه يمكنك رؤية حاويتين قيد التشغيل عند كتابة الأمر على المضيف:

docker ps

وثانيًا، لم أجد في أمر docker run مكانًا لإعداد اسم النطاق.

إذن، أي حاوية كانت تعمل؟ بافتراض أنها كانت ‘app’، فلا، فأنت تشغل إصدارًا قديمًا من discourse-setup.

قم بـ git pull قبل المتابعة للتأكد من أنك تستخدم أحدث إصدار من discourse-setup.

إذا كان لديك حاوية ‘data’ أو ‘web-only’ تعمل، فيجب عليك التحقق مما تسبب في عدم بدء الحاوية الأخرى. عادةً، يفشل بدء حاوية ‘web-only’ لأن هناك عملية (خادم ويب) تعمل بالفعل على المنفذ 80/443.

نعم، التطبيق
أوه لا، لقد قمت بنسخ مصدر الكود من GitHub اليوم.

لم أجرب هذا شخصيًا، ولكن بما أن @pfaffman هو العبقرية التي صممت هذا، فربما يمكنه المساعدة في ذلك.

عند النظر إلى كود discourse-setup على GitHub، لا أرى أي شيء واضح قد يسبب عدم عمله.

ما نظام التشغيل الذي تشغّل عليه خادمك؟

خادم أوبونتو
لقد نجحت في تشغيل حاوية مستقلة.
في الوقت الحالي، أنا أحاول هذه الطريقة: Success - New Multisite Install on Dedicated server using ServerPilot, Nginx and Apache

هل تحاول تحقيق تعدد المواقع أو تعدد الحاويات؟

مقارنة الأداء كما ذكرت، قمت بتشغيل منتدى مستقل لمدة شهر. وعندما أردت إنشاء منتدى جديد، تم استكشاف عدة طرق:

  1. أردت تشغيل حاوية مستقلة منفصلة على نفس الخادم، لكن لم أجد نجاحًا.
  2. إعداد متعدد المواقع باستخدام Docker مع حاوية منفصلة لكل من الويب وقاعدة البيانات، كما هو موضح في https://meta.discourse.org/t/multisite-configuration-with-docker/14084، لكن لم أجد نجاحًا.
  3. إعدادك المكون من حاويتين، لم ينجح أيضًا.
  4. هذه الطريقة: https://meta.discourse.org/t/success-new-multisite-install-on-dedicated-server-using-serverpilot-nginx-and-apache/28108، وهي قيد التجربة، وقد تنجح.

إذا كنت ترغب فقط في تشغيل حاوية مستقلة ثانية، فستحتاج إلى تعديل ملفات yml لاستخدام مجلد ومنفذ مختلفين. ربما يتعين عليك أيضًا تعطيل letsencrypt

بعد إصلاح كل هذه الأمور، أود كتابة بعض الدروس التأسيسية للمبتدئين

إعجاب واحد (1)

معلومة فقط: إذا أردت قياس الأداء، فلا تقم بذلك على خادم إنتاجي. بل قم بتشغيل خادم VPS منفصل واستخدمه لقياس الأداء.

محاولة تشغيل نسختين منفصلتين من Discourse على نفس الخادم قد تؤدي إلى تثبيت معطوب، وهذا غير مثالي.

سيؤدي هذا الأمر إلى إنشاء حاويات بيانات وويب منفصلة فقط إذا لم يكن هناك ملف app.yml عند تشغيله. لن ينشئ حاويتي ويب.

إعجاب واحد (1)

قبل أن أشغّل هذا الأمر، يبدو أن ملف app.yml موجود بالفعل.

أعتقد أن هذا أمر بالغ الأهمية، هل يجب إضافته إلى المنشور الأصلي وربما على GitHub أيضًا؟

أعتقد أنني كان يجب ألا أترك هذه الميزة غير موثقة. وفي الواقع، لا تساعد النقل إلى تكوين من حاويتين، لذا ربما لا تنتمي إلى هنا من الأساس.

إعجاب واحد (1)

ربما يكون هناك قسم مخصص #كيف_تفعل؟

لا يجب أن يكون مفصلاً للغاية، لكنه يمكن أن يكون مفيدًا جدًا لأولئك الذين يرغبون في البدء في بعض مغامرات Discourse المتقدمة؟

إعجابَين (2)

ربما كذلك. إنها مساعدة كبيرة، ومثل إعداد discourse، فهي مخصصة لغرض محدد جدًا، وهو تثبيت جديد قياسي تمامًا. لقد استخدمت نصوص التثبيت الخاصة بي هذه الأداة منذ فترة طويلة. يمكن أن تكون طريقة سهلة للتحول إلى حاويتين إذا كنت مستعدًا لنسخ احتياطي للحاوية القديمة واستعادتها في الحاوية الجديدة.

كانت مخاوفي دائمًا أنها ستكون صعبة الدعم، حيث سيحاول الأشخاص الذين لا يفهمونها استخدامها، ثم لن يتمكنوا من استخدام أي وثائق، لأن أمر “إعادة بناء التطبيق” لن يعمل بعد الآن، كما أن معرفة متى تحتاج إلى إعادة بناء حاوية قاعدة البيانات أمر صعب أيضًا. فشلت عملية إعادة بناء مؤخرًا لأن إصدار Redis كان 3.0 بينما يتطلب الآن إصدار 4.0. ثم تطلب الأمر أيضًا تحديث PostgreSQL، مما استدعى اتباع سلسلة من الخطوات، لكنك كنت بحاجة إلى معرفة متى تعيد بناء حاوية البيانات ومتى تعيد بناء حاوية الويب، وكيف تغير المسار عما هو موصى به. سارت كل الأمور بسلاسة تامة — بالنسبة لي، لكن محاولة شرح ذلك لشخص لا يعرف ما هو Bash في منتدى سيكون محبطًا للجميع.

أعتقد أنه قد يكون من الأفضل الحفاظ على عتبة عالية لإنشاء تثبيت غير قياسي، لحماية الناس من أنفسهم.

3 إعجابات