(J’ai marqué ceci comme unsupported-install mais j’apprécierais l’avis d’un gourou de toute façon
)
Les gars, j’essaie de faire fonctionner une image Discourse de base dans une configuration multi-conteneurs simple-ish(?) via Docker Compose.
Voici les bases :
- Le forum se trouve dans un sous-dossier, appelons-le
/board, donc (https://blah.com/board) - nginx transmet les appels à
/board:443àlocalhost:4000. - Discourse rails fonctionnait sur le port 4000 (car le 3000 est utilisé par autre chose)
- inclus dans les variables d’environnement Rails se trouve un paramètre crucial qui configure cela pour fonctionner :
DISCOURSE_RELATIVE_URL_ROOT: “/board”
Maintenant, j’ai mis à jour la version de Discourse (avant Ember-CLI) et les choses ne fonctionnent plus.
Alors, bien sûr, j’ajoute un conteneur pour Ember-CLI qui exécute :
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://localhost:4200"
Donc, Ember gère maintenant les appels entrants sur le port 4000 dans un premier temps.
Je déplace le conteneur Discourse rails vers le port 4200 et je lance les choses.
D’abord les bonnes nouvelles :
- curl du site de développement fonctionne !
Maintenant les mauvaises nouvelles :
- Ne fonctionne pas dans le navigateur, pourquoi ? :
parce qu’il essaie apparemment de contacter Discourse mais demande :
/bootstrap.json
en donnant l’erreur :
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
au lieu de
/board/bootstrap.json (qui renvoie des données).
Si au lieu de cela j’utilise cette configuration :
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://0.0.0.0:4200/forum"
J’obtiens une erreur Rails :
Routing Error
No route matches [GET] "/forum"
Pourtant, pas quelques lignes plus loin, il me fournit :
bootstrap_path GET /bootstrap(.:format)
bootstrap#index {:format=>/(json|html|\*\/ \*)/}
Ce qui est exactement le chemin que j’essayais d’atteindre ?
Comment puis-je rendre Ember suffisamment intelligent pour faire un proxy vers le sous-dossier lorsqu’il essaie d’obtenir les informations de bootstrap ?, c’est-à-dire :
http://0.0.0.0:4200/forum/bootstrap.json
Rappelez-vous, dans ce cas, Ember s’exécute dans son propre conteneur.