(لقد قمت بوضع علامة unsupported-install ولكنني أقدر مدخلات الخبراء بغض النظر )
يا رفاق، أحاول تشغيل صورة Discourse أساسية في إعداد حاوية Docker متعددة بسيطة إلى حد ما عبر Docker Compose.
إليك الأساسيات:
المنتدى موجود في مجلد فرعي، لنسميه /board، لذا (https://blah.com/board)
يقوم nginx بتمرير المكالمات إلى /board:443 إلى localhost:4000.
كان Discourse rails يعمل على المنفذ 4000 (لأن 3000 يستخدمه شيء آخر)
يتضمن إعدادات Rails ENVs إعدادًا حاسمًا يعمل على هذا النحو:
DISCOURSE_RELATIVE_URL_ROOT: “/board”
الآن قمت بتحديث إصدار Discourse (قبل Ember-CLI) ولم تعد الأمور تعمل.
لذلك، بالطبع، أضيف حاوية لـ Ember-CLI تعمل:
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://localhost:4200"
لذا فإن Ember يتعامل الآن مع المكالمات الواردة على 4000 في المقام الأول.
أنقل حاوية Discourse rails إلى المنفذ 4200 وأبدأ الأمور.
أولاً الأخبار الجيدة:
استدعاء الموقع التجريبي يعمل!
الآن الأخبار السيئة:
لا يعمل في المتصفح، لماذا؟:
لأنه يحاول على ما يبدو الوصول إلى Discourse ولكن يطلب:
/bootstrap.json
مما يعطي الخطأ:
Discourse Ember CLI Proxy Error
Error: Could not get http://0.0.0.0:4200/bootstrap.json
FetchError: invalid json response body at http://0.0.0.0:4200/bootstrap.json?for_url=%2Fboard reason: Unexpected token N in JSON at position 0
بدلاً من
/board/bootstrap.json (الذي يعيد البيانات).
إذا استخدمت هذا الإعداد بدلاً من ذلك:
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://0.0.0.0:4200/forum"
أحصل على خطأ Rails:
Routing Error
No route matches [GET] "/forum"
ومع ذلك، ليس بعيدًا عن ذلك، فإنه يزودني بـ:
bootstrap_path GET /bootstrap(.:format)
bootstrap#index {:format=>/(json|html|\*\/ \*)/}
وهو بالضبط المسار الذي كنت أحاول الوصول إليه؟
كيف أجعل Ember ذكيًا بما يكفي لتمرير المجلد الفرعي عند محاولة الحصول على معلومات bootstrap؟، أي:
http://0.0.0.0:4200/forum/bootstrap.json
تذكر، في هذه الحالة، يعمل Ember في حاويته الخاصة.
إعجاب واحد (1)
pfaffman
(Jay Pfaffman)
18 أكتوبر 2022، 3:47م
2
كيف تقوم ببناء الحاوية؟ هل تقوم بتشغيل تلك الحاوية من docker-compose؟
كان هناك . . . آه، بعض إعدادات البيئة . . . التي يمكن استخدامها لمحاولة منع ember-cli من العمل؛ هل قمت بإزالة ذلك؟ (أعتقد أنه تم تجاهله الآن على أي حال؟)
نعم، تعريفات الحاويات هذه موجودة في docker-compose.
لا توجد إعدادات بيئة في حاوية ember-cli حاليًا.
pfaffman
(Jay Pfaffman)
18 أكتوبر 2022، 3:52م
4
هل تقوم ببناء الحاوية باستخدام المشغل (launcher) مع الأشياء من Serve Discourse from a subfolder (path prefix) instead of a subdomain قبل أن تجعل docker-compose يقوم بتشغيلها؟
ما هو الوكيل (proxy)؟ ربما قم فقط بتشغيل discourse باستخدام المشغل (launcher) واستخدم docker-args لتعيين الأشياء الأخرى المطلوبة؟ بالنسبة لـ traefik، أفعل شيئًا كهذا:
--docker-args "-l traefik.frontend.rule=Host:{{discourse_hostname}};PathPrefix:/{{discourse_subfolder}} \
-l traefik.frontend.entryPoints=https \
-l traefik.backend={{discourse_shortname}} \
-l traefik.port=80 \
{{ docker_extra_args | default('')}}"
إعجاب واحد (1)
لا، أنا فقط أستخدم صورة Docker الخاصة بـ Discourse (الإصدار 2.8.9).
(في الواقع، الصورة مستضافة محليًا، ولكنها تقريبًا:)
discourse:
command: bin/rails s -b 0.0.0.0 -p 4200
image: discourse:v2.8.9
environment:
DISCOURSE_PORT: 4200
DISCOURSE_RELATIVE_URL_ROOT: “/board”
<SNIP>
ports:
- 4200:4200
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://0.0.0.0:4200"
image: discourse:v2.8.9
ports:
- 4000:4000
pfaffman
(Jay Pfaffman)
18 أكتوبر 2022، 4:24م
6
حسنًا. في هذه الحالة، لا يمكنني تفسير كيف كان يعمل الأمر. أعتقد أنك بحاجة إلى بناء صورة باستخدام مشغل يضيف الأشياء لدعم تثبيتات المجلدات الفرعية.
تم الحل.
خطئي لعدم إضافته إلى حاوية Ember CLI (كان موجودًا بالفعل في حاوية Rails):
DISCOURSE_RELATIVE_URL_ROOT: "/board"
أوه
للعلم، أعتقد أن الملف الرئيسي في المصدر هو هذا:
"use strict";
module.exports = function (environment) {
let ENV = {
modulePrefix: "discourse",
environment,
rootURL: process.env.DISCOURSE_RELATIVE_URL_ROOT || "/",
locationType: "history",
historySupportMiddleware: false,
EmberENV: {
FEATURES: {
// Here you can enable experimental features on an ember canary build
// e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true
},
EXTEND_PROTOTYPES: {
// Prevent Ember Data from overriding Date.parse.
Date: false,
3 إعجابات
system
(system)
تم إغلاقه في
17 نوفمبر 2022، 9:42م
8
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.