هذا إعداد متقدم. لا تتبعه إلا إذا كنت خبيرًا في إدارة خوادم Linux و Docker. تحتاج أيضًا إلى إيلاء اهتمام وثيق لـ commits إلى discourse_docker للتأكد من ملاحظة أي زيادة في إصدار postgres أو redis.
تحويل الإعداد الحالي الخاص بك
تمكنت من الترحيل إلى حاويتين. إذا احتاج أي شخص آخر إلى إرشادات، فإليك كيف سارت الأمور بالنسبة لي.
تتضمن العملية النسخ الاحتياطي، وإعداد حاويات ويب وبيانات منفصلة، واستعادة البيانات.
-
انسخ نسخة احتياطية من مثيل discourse الخاص بك وقم بتنزيل النسخة الاحتياطية. يمكنك اتباع الدليل البسيط أو النسخ الاحتياطي والاستعادة يدويًا لاحقًا.
-
أوقف الحاوية المستقلة الحالية
./launcher stop app -
انسخ
web_only.ymlوdata.ymlمنsamples/إلىcontainers/وقم بإعادة تسميتهما إلى أي شيء تريده، على سبيل المثال،web_rocks.ymlوdata2.yml. -
إذا قمت بإعادة تسميتهما، يرجى الانتباه إلى الإدخالات
volumes:فيdata.ymlوweb_only.yml
إذا قمت بإعادة تسميةweb_only.ymlإلىweb_rocks.yml، فستحتاج إلى تعديل الإدخال فيWeb_rocks.ymlكالتالي:
volumes:
- volume:
host: /var/discourse/shared/web_rocks
guest: /shared
- volume:
host: /var/discourse/shared/web_rocks/log/var-log
guest: /var/log
وبالمثل، قم بإجراء تعديل مماثل في data.yml أيضًا.
إعداد حاوية البيانات
ابدأ بـ data.yml وقم بتعيين كلمة مرور لقاعدة البيانات. ثم:
- انتقل إلى المجلد الجذر للحاوية
/var/discourse - قم بتشغيل
./launcher bootstrap data2(data2 أو أي اسم جديد أطلقته عليه) - قم بتشغيل
./launcher start data2(باستخدام الاسم الجديد مرة أخرى) - إذا سار كل شيء بسلاسة، يمكنك الاتصال بالحاوية عبر:
./launcher enter data2(باستخدام الاسم الجديد مرة أخرى) - اخرج من الحاوية عن طريق
exit.
إعداد حاوية الويب
لنقم بتعديل web_only.yml.
أولاً، قم بتغيير القالب وكشف المنافذ كما يفعل app.yml الخاص بك.
ثانيًا، تأكد من أنك تربط بحاوية البيانات الصحيحة. إذا قمت بإعادة تسمية data.yml إلى ‘something_else’ فقم بوضعه لـ ‘name’.
# استخدم مفتاح 'links' لربط الحاويات معًا، أي استخدم علامة Docker --link.
links:
- link:
name: data
alias: data
على الرغم من أننا لا نريد كشف ssh أو أي منافذ أخرى بعد الآن، إلا أنك ستحتاج إلى كشف المنفذين 80 و 443 للوصول إلى الويب. يعتمد هذا على ما إذا كان لديك nginx يعمل في المقدمة وكيفية توصيل الحاوية به.
في مكان ما هناك ستجد هذه الكتلة:
DISCOURSE_DB_USERNAME: discourse
DISCOURSE_DB_PASSWORD: mypassword
DISCOURSE_DB_HOST: data
DISCOURSE_REDIS_HOST: data
- أدخل كلمة المرور التي قمت بتعيينها داخل حاوية البيانات.
- أدخل اسم مستعار لحاوية البيانات الذي كتبته للتو. لـ
DB_HOSTوREDIS_HOST. يجب أن يتطابق مع كتلة الروابط التي ذكرناها. - من المحتمل أنك لم تغير
DB_USERNAME.
ستجد القيم لـ DISCOURSE_DEVELOPER_EMAILS و DISCOURSE_HOSTNAME والعديد من القيم الأخرى. لديك بالفعل هذه القيم في app.yml الخاص بك. انسخها من هناك.
في قسم الخطافات (hooks) تذكر تعيين أي إضافات إضافية تستخدمها بالفعل داخل app.yml
الآن يجب أن تكون جاهزًا للتمهيد:
./launcher bootstrap web_only (مرة أخرى بالاسم الجديد/الخاص بك)
بمجرد التمهيد، يمكنك بدء تشغيل web_only (استخدم اسمك الجديد):
./launcher start web_only
عندما يصبح Discourse جاهزًا، قم بتسجيل الدخول واستعادة موقعك.
بعد ذلك، عمل كل شيء مرة أخرى بالنسبة لي وكان تثبيت discourse الخاص بي يعمل مرة أخرى، ولكن الآن في حاويتين منفصلتين.
كيفية التحديث عند استخدام حاويات ويب وبيانات منفصلة
إذا لم تهتم ببضع دقائق من التوقف عن العمل - أو عندما تحتاج البيانات إلى الترقية. التغييرات على postgres و redis نادرة، ويسمح ترك حاوية البيانات قيد التشغيل ببناء حاوية web_only جديدة بينما تعمل الحاوية القديمة.
./launcher stop web_only && ./launcher rebuild data && ./launcher rebuild web_only
هذا يعمل لترقية طفيفة لـ Postgres و/أو ترقية redis.
إذا كنت تهتم بكل دقيقة من التوقف عن العمل و لا تحتاج البيانات إلى الترقية (وهو الحال في معظم الأوقات):
ترقية web_only فقط:
./launcher bootstrap web_only && ./launcher destroy web_only && ./launcher start web_only
يكفي إعادة بناء web_only وتخطي data إلا عندما يكون هناك ترقية لـ postgres أو redis. تحدث هذه الترقية مرة واحدة تقريبًا في السنة وسترى إعلانًا مثل PostgreSQL 15 update عندما يحدث ذلك، على الرغم من أن الترقيات إلى redis وتحديثات postgres الطفيفة ليست معلنة بوضوح.
تتطلب إعادة بناء البيانات وقت توقف عن العمل (لنفس السبب الذي يجعل الإصدار ذي الحاوية الواحدة يتطلب ذلك - لا يمكنك ترقية postgres بينما تقوم عملية أخرى بالوصول إلى نفس ملفات قاعدة البيانات. أيضًا، عند إنشاء حاوية بيانات جديدة، يجب عليك تدمير وبدء تشغيل حاوية web_only لأنها ستحاول الاتصال بالحاوية القديمة).
لست بحاجة غالبًا إلى إعادة بناء حاوية البيانات (وهذا هو السبب في أن هذه الطريقة توفر وقت التوقف عن العمل). تحتاج إلى الانتباه إلى متى يكون هناك ترقية في postgres أو redis؛ الواجهة الأمامية لن تعرف؛ هذا إعداد متقدم يتطلب مزيدًا من الاهتمام من حاوية واحدة.
إدارة تثبيت ذي حاويتين
سيقوم @pfaffman بإنشاء موضوع حول هذا الأمر يومًا ما، ولكن حتى ذلك الحين، هناك هذا: Managing a Two-Container Installation - Documentation - Literate Computing Support

