هممم… ![]()
لا يحتاج البرنامج النصي حتى إلى الوصول إلى /var/discourse (لماذا يفعل ذلك؟).
تنبع المشكلة بأكملها من أمرين:
- سوء فهم كبير لما هو docker، وكيف يعمل، وما الذي يتيحه
- ربط مفهوم docker بـ docker-compose (وهو ليس كذلك!)
يمكنك الحصول على إعداد مغلق تمامًا لا يمس البيئة المضيفة تقريبًا…
بعد إجراء الكثير من البحث، يبدو أن برنامج الإعداد بأكمله تم إنشاؤه لجعل التثبيت بسيطًا قدر الإمكان للشخص غير التقني تمامًا. يقوم بالتحقق، ويوجه المستخدم، ويقوم بإعداد كل شيء. قد يكون هذا شيئًا جيدًا، ولكنه يفشل تمامًا في أي شيء يحاول الانحراف ولو بوصة واحدة عن المسار المتصور.
في الإعداد الأساسي، قد لا تحتاج حتى إلى الوصول إلى أي مجلدات مضيفة - سيتم احتواء كل شيء داخل بيئة محدودة (سيتم استخدام الصورة لإنشاء الحاوية وسيتم التعامل مع جميع مساحات التخزين المطلوبة عبر وحدات تخزين docker [لديها مشاكل عندما تريد الترحيل إلى مكان آخر أو الوصول إلى الملفات ولكننا نتحدث عن الأساسيات]).
كما أنه يحاول التأكد من صحة DNS، ويحاول إعداد الشهادات، والوكيل العكسي، و SMTP، وما إلى ذلك - مرة أخرى، لا بأس تمامًا في توفير هذا الإعداد السهل.
ولكن!
المشكلة ليست في التخلي عن ذلك، بل في توفير صورة docker عادية بالإضافة إلى ذلك (إنها موجودة بالفعل، ويتم استخدامها بواسطة البرامج النصية والقوالب التي يستخدمها البرنامج النصي! discourse_docker/templates/postgres.template.yml at main · discourse/discourse_docker · GitHub و discourse_docker/launcher at main · discourse/discourse_docker · GitHub) مع
- إصدار مناسب: تقوم بتمييز الصورة بإصدار discourse الذي تم إصداره (3.4.5 أو ما شابه)
- توثيق معقول وبسيط لمتغيرات البيئة المتوقعة (التي تدير اتصال قاعدة البيانات/redis/إلخ) والمسارات/وحدات التخزين المحتملة التي يمكن تحميلها على المضيف.
فقط هذا…
ألق نظرة على دليل miniflux المذكور أعلاه: Miniflux Installation with Docker - يمنحك تفاصيل حول الصورة (وأي مستودعات تخدمها) ومتغيرات البيئة الممكنة لتكوينها.
أو صورة MySQL docker: https://hub.docker.com/_/mysql - نفس الشيء - دليل يشرح ما يمكن تكوينه (انظر بشكل خاص القسم: “متغيرات البيئة”).
لا يقول أحد: “عليك استخدام برنامج تثبيت mysql لبناء صورة mysql حتى تتمكن من استخدامها”، أو redis لهذا الغرض - في هذه الحالة، أنت ببساطة تستخدم الصور الموجودة وهذا هو المفتاح وجوهر استخدام docker. ومع ذلك، في حالة discourse، فجأة يصبح هذا حلاً “سيئًا” ويصرخ الجميع: “عليك بناء صورتك الخاصة!” - لماذا!؟