إليك واحدة لم أستطع حلها رغم العديد من عمليات تثبيت Discourse والهجرة الناجحة تمامًا.
الخلفية:
كان Discourse يعمل بشكل جيد داخل حاوية Docker وكنا نعمل على بعض الفروق الدقيقة في قاعدة بيانات PostgreSQL.
حدثت المشكلة عندما لم نكن راضين عن نتائج إعادة بناء المنشورات الخام (re-baking raw posts)، ولم يعد أي شيء يعمل كما هو مخطط له، لذا قررنا حذف قاعدة بيانات postgres وإعادة إنشائها؛ لكن التطبيق استمر في إظهار أخطاء صلاحيات مختلفة، إلخ.
ثم قررنا “الذهاب بقوة” وقررنا تدميرها بأسلوب “ما الذي يحدث”؛ وذهبنا ببساطة إلى postgres (مع علمنا بأن هذا لن ينتهي بشكل جيد، لكننا أردنا التجربة) وحذفنا جميع المواضيع و المنشورات من قاعدة البيانات (DELETE FROM topics; DELETE FROM posts;). هذا ساعد إلى حد ما؛ لكننا لم نكن راضين عن النتائج (انتهت التجربة)، لذا قررنا إعادة بناء Discourse من الصفر، مع نقل /var/discourse القديم بعيدًا، وسحب نسخة جديدة من git للبدء من جديد.
المشكلة
عندما قمنا بالبناء جديد تمامًا من سحب git، سار الأمر بسلاسة (عملية البناء) حتى الوصول إلى الجزء الذي نذهب فيه إلى الموقع لإنشاء تسجيل الدخول للمسؤول.
عندما ذهبنا إلى تسجيل الدخول للمسؤول لتثبيت جديد، كان الموقع القديم الذي دمرناه! كان هذا مفاجئًا.
لذا قررنا الدخول إلى هذا التطبيق الجديد ومحاولة حذف جميع جداول Discourse من قاعدة البيانات، وهو ما قمنا به؛ لكن، المفاجأة، عند إعادة بناء التطبيق مرة أخرى، لم يكن موقعًا جديدًا، بل نفس الموقع المعطل المذكور أعلاه.
لذلك، حذفنا جميع مجلدات /var/*discourse*؛ وأزلنا جميع صور Docker، ظانين أن هذا سيجعلها نظيفة تمامًا، وبدأنا من جديد بسحب git إلى /var/discourse مرة أخرى والبناء مما اعتقدنا أنه من الصفر تمامًا؛ لكن المفاجأة.. الموقع القديم لا يزال موجودًا.
متسائلين: “كيف يمكن أن يكون هذا”…؟
قمنا بتشغيل ps aux | grep postgres خارج حاوية Docker ولاحظنا أن postgres موجود خارج الحاوية (وهو أمر مفاجئ، حيث اعتقدنا خطأً أن تثبيت Discourse عبر Docker كان كله داخل حاوية Docker)؛ ثم حاولنا العثور على مكان للتنظيف، لكن دون جدوى.
بحثنا حتى تحولت روابط Google إلى اللون الأرجواني، وجربنا الكثير… لكننا لا نستطيع الحصول على تثبيت نظيف لـ Discourse.
ظانين أننا نغفل شيئًا، انتقلنا إلى خادم جديد، لم يتم تثبيت Discourse عليه من قبل، وقمنا بتثبيت Discourse من الصفر، وعمل بسلاسة كما هو معتاد (خادم آخر).
السؤال
سؤالي، أعتقد… عندما يخرج التثبيت تمامًا عن السيطرة (بأي طريقة كانت)، كيف يمكننا إعادة الخادم، بما في ذلك PostgreSQL، إلى نقطة الصفر حتى يختفي هذه المشكلة ونتمكن من الحصول على تثبيت جديد تمامًا؟
آسف على هذا المنشور الطويل، بينما قد يكون السؤال وحده كافيًا للحصول على المساعدة.
شكرًا لكم.