تستغرق صيانة الموقع باستخدام “./launcher rebuild app” بعض الوقت لإعادة بناء الموقع بالكامل (تثبيت إضافات جديدة وما إلى ذلك من git).
هل هناك أي طريقة موصى بها لعرض صفحة ثابتة تقول “قيد الصيانة” أثناء إعادة بناء discourse؟
ما فكرت فيه هو استخدام nginx. يتضمن ذلك إيقاف docker للخدمة على المنفذ 80 والسماح لـ nginx بالوكالة العكسية لتولي المسؤولية وإعادة توجيه حركة المرور إما إلى حاوية docker أو إلى صفحتي الثابتة.
أفكر في القيام بذلك عن طريق تحرير nginx.conf يدويًا ليصبح كالتالي كلما لزم الأمر،
الطريقة التي أعتقد أنها أفضل وأسهل هي استخدام إعداد حاويتين بحيث يمكنك بناء حاوية جديدة أثناء تشغيل الحاوية القديمة. هناك وقت تعطل أقل بكثير بهذه الطريقة. يعتقد آخرون أن تشغيل خادم ويب إضافي أسهل.
تتم ترقيات قواعد البيانات الرئيسية بشكل أقل من مرة واحدة في السنة. ترقيات قواعد البيانات الثانوية لا تستغرق وقتًا طويلاً ويمكنك إعادة بناء حاوية البيانات، وتدمير حاوية الويب وتشغيلها في غضون دقائق قليلة. يبدو أن بعض الأشخاص يفضلون رسالة جميلة تفيد بأن الموقع معطل بدلاً من تقليل وقت التعطل، لذا فإن الحاوية الثانية هي الطريقة للقيام بذلك.
في الواقع، ربما يكون الحل الأسهل هو مجرد وجود حاوية nginx ثانية مع رسالة “سنعود قريبًا” تقوم بتشغيلها يدويًا أثناء إجراء ترقية، مثل
./launcher stop app
docker run nginx --name back-soon # والمزيد من الأشياء لرؤية أنه تم تقديم صفحة
./launcher bootstrap app
./launcher destroy app
docker stop back-soon
./launcher start app
ولكن بعد ذلك يتعين عليك الحصول على شهادة والحفاظ على تحديث الشهادة لحاوية back-soon، وهو أمر معقد.