حاوية Docker تستمع فقط إلى IPv6

أعمل على إعداد مثيل تجريبي من Discourse في آلة افتراضية (VM) حتى أتمكن من العمل على استيراد البيانات من برنامج آخر. أنا جديد على Docker و Discourse و Ruby، لذا لم أتعرف بعد على ما يحدث في الخلفية. حتى الآن، قمت بعمل نسخ فرعية (fork) لمستودع discourse_docker ثم استخدمته متبّعًا الإرشادات هنا (باستخدام آلة افتراضية محلية من Ubuntu بدلاً من مثيل سحابي): discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

بعد الإعداد، وفقًا لنتائج أمر netstat، يبدو أن الآلة الافتراضية المحلية هنا قامت بإعداد الحاوية بطريقة تجعل المنافذ 80 و443 تستمع فقط إلى عنوان IPv6. ولا أستخدم IPv6 محليًا، لذا لا يمكنني الوصول إلى مثيل Discourse. كيف يمكنني تصحيح هذا؟ لقد نظرت في ملف app.yml ولكن لا يبدو أن هناك أي إعدادات ربط (bind settings) فيه. لقد بحثت عن أي شخص واجه مشكلة مماثلة - كانت هناك نتيجة واحدة أعتقد أنها تعود لعام 2015، حيث كان الحل هو تغيير إعدادات DNS داخل الحاوية نفسها. يبدو هذا فكرة سيئة (Bad Idea™)، لذا آمل في وجود حل أقل تعقيدًا.

شكرًا!

من المرجح أنك لا تحتاج إلى عمل فورك للمستودع.

المشكلة على الأرجح تتعلق بالاستضافة الافتراضية الخاصة بك. لم أرَ هذا من قبل.

لقد قمت بعمل نسخة (fork) للمستودع في محاولة لاتباع هذا الدليل:

غير أنني لا أتوقع أن يتسبب ذلك في أي مشاكل.
أقوم بتشغيل تثبيت جديد لنظام Ubuntu Server (تم تحميله من ubuntu.com) على ESXi. كل هذا أمور قياسية جداً.

أين يتم تحديد كيفية ربط الخدمات في الإعدادات؟

يرتبط افتراضيًا بجميع عناوين IP.

يمكنك إضافة عناوين IP إلى الأسطر التي ترسم المنافذ، لكن من المرجح أن المشكلة تتعلق بالآلة الافتراضية. هل هي Digital Ocean؟

هناك أمثلة هنا لتشغيل استيراد في حاوية. ومن المرجح أن تكون أفضل من الرابط الذي أرسلته (لكنني لم ألقِ نظرة عليه، لذا قد أكون مخطئًا).

لا، لدي مضيف VMware خاص بي أستخدمه لتشغيل الآلة الافتراضية. ولا أواجه أي مشكلة في الوصول إلى الآلة الافتراضية عبر IPv4 سواء مباشرة أو عبر اسم DNS. المشكلة فقط أنه لسبب ما، خدمات Docker (وليس الأشياء الافتراضية مثل خادم SSH) ترتبط فقط بـ :::80 و :::443 بدلاً من 0.0.0.0.

هل هناك ملف سجل ذي صلة في مكان ما قد يوفر بعض التفاصيل؟

هناك أمثلة هنا لتشغيل عملية استيراد داخل حاوية. ومن المرجح أن تكون أفضل من الرابط الذي أشرت إليه (لكنني لم ألقِ نظرة عليه، لذا قد أكون مخطئًا).

حسنًا، حتى الآن لم أصل بعد إلى مرحلة الاستيراد. :face_with_tongue:
في النهاية، أود العمل على تحسين سكريبت الاستيراد هذا لموقعنا. لقد كافحت حتى الآن مع بعض الأدلة المختلفة للبدء، لكنني اعتقدت أن التثبيت العادي البسيط سيكون هو الخيار الأفضل في الوقت الحالي.

المشكلة تكمن في Docker أو في الآلة الافتراضية لديك. أنصحك بالاطلاع على أدلة الآلة الافتراضية وDocker والبدء بإنشاء حاوية “Hello World” بسيطة. هذه ليست مشكلة في Discourse.