مرحباً بالجميع،
مؤخرًا حاولت تثبيت Discourse على خادم Debian الخاص بي، وسار كل شيء على ما يرام باستثناء أنني لم أتمكن من الوصول إلى الموقع بسبب أنني حاولت تغيير المنفذ للوصول إليه، ولكن لم يظهر سوى Nginx، لذا اكتشفت المشكلة وحاولت تعيين عنوان IP مخصص مع شبكة مخصصة ستشير إلى شبكتي، لكنني لم أتمكن من الوصول إليها، واستمرت في إعطائي أخطاء، وهذا هو الخطأ الذي حصلت عليه:
./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
x86_64 arch detected.
docker: Error response from daemon: network -i not found.
Your Docker installation is not working correctly
See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
لقد جربت أيضًا قبل ذلك باستخدام hello-world ونجح الأمر:
docker run -it --network discourse_back --ip 192.168.1.4 hello-world
Hello from Docker!
. . .
هل لدى أي شخص فكرة عن كيفية إصلاح ذلك؟ شكرًا مقدمًا!
إذًا، لقد تمكنت أخيرًا من تشغيله، ولكن الآن يظهر “Welcome to nginx” ولكنني أدخلت اسم المضيف الخاص بي “discourse.simonz.local” (وهو مكتوب أيضًا في app.yml عند
إذا كنت تنوي أن تكون هذه النسخة متاحة على الإنترنت، فإن استخدام نطاق .local في app.yml سيتسبب في حدوث مشاكل. ربما يكون هذا شيئًا تنوي استخدامه فقط في المنزل أو للاختبار فقط، فقط اعتقدت أنه يستحق الذكر.
بافتراض أن شبكة Docker الخاصة بك تعمل بشكل صحيح، مما يجعل الحاوية قابلة للوصول على عنوان IP هذا من خارج الجهاز المضيف، ستحتاج أيضًا إلى DNS لتوجيه discourse.simonz.local إلى عنوان IP هذا.
يبدو أن ما يحدث هو أن النطاق يتم حله إلى الجهاز المضيف ولا تحدد المنفذ (على سبيل المثال، discourse.simonz.local:1234) عند محاولة الوصول إليه، لذلك يصل فقط إلى nginx بدلاً من حاوية docker.
إذا كنت تريد أن يكون Discourse متاحًا على منفذ مختلف، فربما لا تحتاج إليه على عنوان IP مختلف. إذا كنت تريده متاحًا على المنفذ القياسي، وكذلك nginx على المنفذ القياسي، فأنت بحاجة إلى DNS لتوجيهك إلى عنوان IP الصحيح أو تحتاج إلى nginx لعمل بروكسي لـ Discourse.
عادةً ما تعلن أنظمة .local عن نفسها بناءً على اسم المضيف الذي تم تكوينه. لا يحتاج Discourse حقًا إلى القيام بذلك عادةً، لذلك قد لا يكون لدى الحاوية أي شيء للقيام بذلك.
إذا كنت ترغب في اتباع مسار المنفذ القياسي، عنوان IP مختلف، DNS، فهذا خارج نطاق Discourse وسيتم إعداد ذلك اعتمادًا على عوامل مختلفة في شبكتك.
إذا كان هدفك هو مجرد توفير شيء ما في nginx بالإضافة إلى Discourse على نفس المضيف، فأنا أوصي بنهج البروكسي الموضح أعلاه. بينما لا يزال تثبيتًا غير مدعوم تقنيًا، إلا أنه إعداد أكثر شيوعًا وسيكون هناك المزيد من الأشخاص القادرين على المساعدة فيه.
أنا أستخدم إصدار docker compose ويبدو أنه يأتي مع nginx وهو موجود بالفعل داخل جهاز افتراضي ولكني أحاول تشغيله بنفس الجهاز الافتراضي ولكن شيئًا واحدًا يخرج كـ ..1.3 (موقعي الآخر) والآخر كـ ..1.4 (discourse)
لقد أدركت للتو أنني قمت بالفعل بالتثبيت القياسي، وأريد فقط تغيير عنوان IP الذي يستجيب له. عنوان IP الافتراضي الخاص بي هو 192.168.1.3، ولكني أريد أن يستجيب إلى 192.168.1.4. كلا هذين العنوانين موجودان بالفعل في الجهاز ومُعدّان.
إذا كان الجهاز الافتراضي يحتوي على عنواني IP، فلن تحتاج إلى فعل أي شيء بعنوان IP الخاص بحاوية Docker، بل تحتاج فقط إلى توجيه جدار الحماية بحيث يذهب …1.3:80/443 إلى المضيف و …1.4:80/443 إلى حاوية Docker.
إذا كان هذا نظام Linux، فوفقًا لمعرفتي، فإن iptables و ufw هما الأكثر شيوعًا. ستحتاج على الأرجح إلى الرجوع إلى الوثائق أو السؤال في مجتمعاتهم للمساعدة في كيفية إعداد هذا التوجيه.
ما لم تكن بحاجة إلى اختبار هذا النوع من الإعداد حيث ترغب في تثبيت Discourse في النهاية، ما زلت أوصي بتشغيل جهاز افتراضي ثانٍ لهذه التجربة. أي تعقيدات تشغيل Discourse جنبًا إلى جنب مع برامج HTTP/HTTPS أخرى تختفي مع تشغيله داخل جهاز افتراضي خاص به.
حسنًا، شكرًا لك على أي حال، تمكنت من تشغيله ولكن لم أتلق أي رد، ربما أفسدت شيئًا ما، ولكن شكرًا على المساعدة، سأحاول مرة أخرى ربما سأحصل على نتيجة جديدة، شكرًا للجميع على المساعدة، أتمنى لكم يومًا رائعًا ^^