كيف يمكنني ترقية Discourse في تكوين متعدد الحاويات؟

مرحبًا! لقد قمت للتو بإعداد تثبيت جديد لـ Discourse يحتوي على حاويات متعددة، وأتساءل عن أفضل طريقة للترقية.

توضح الوثائق ما يلي:

قلّل وقت التوقف عند الترقية إلى إصدارات جديدة من Discourse. يمكنك بدء تشغيل عمليات الويب الجديدة بينما يعمل موقعك، والتبديل إلى الصورة الجديدة فقط بعد اكتمال بنائها.

بناءً على قراءتي لهذا، أتساءل هل يعني ذلك أنه من الآمن تشغيل إصدار سابق من Discourse بشكل نشط بينما يتم ترقية الحاوية الأخرى؟

على سبيل المثال:

لنفترض أنني أملك حاويتين مخصصتين للويب فقط تعملان على جهازين افتراضيين منفصلين خلف موزع أحمال. سأقوم بإزالة أحد مثيلات الحاوية من موزع الأحمال، ثم أشغل عملية التمهيد (bootstrap) على أحدث إصدار. الإصدار القديم لا يزال يعمل دون توقف (هل هذا مقبول؟). بعد ذلك، سأعيد الحاوية المحدثة إلى موزع الأحمال، وأكرر العملية على الحاوية الأخرى.

يبدو هذا صحيحًا، أليس كذلك؟

هذا صحيح تقريبًا. للحصول على ترقيات بدون توقف فعلي، يجب عليك تهيئة الحاوية الجديدة باستخدام SKIP_POST_DEPLOYMENT_MIGRATIONS: 1، ثم تشغيلها، وبعد أن تتوقف الحاويات القديمة عن العمل، قم بتشغيل أمر SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate. وإلا، فقد تؤدي عملية التهيئة (على الرغم من أنها لا تفعل ذلك في كل ترقية) إلى وضع قاعدة البيانات في حالة لا يمكن للحاوية القديمة استخدامها بعد الآن.

يا هذا رائع! كانت ترحيلات قاعدة البيانات هي ما يقلقني بالضبط، لذا من المفيد معرفة كيفية التحكم فيها!