Installation de sous-dossier Docker ne fonctionne pas en raison d'une erreur de proxy Ember-CLI ?

(J’ai marqué ceci comme unsupported-install mais j’apprécierais l’avis d’un gourou de toute façon :slight_smile:)

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.

1 « J'aime »

Comment construisez-vous le conteneur ? Lancez-vous ce conteneur à partir de docker-compose ?

Il y avait… euh, un paramètre d’environnement… qui pouvait être utilisé pour essayer d’empêcher ember-cli de fonctionner ; l’avez-vous supprimé ? (Je pense qu’il est ignoré maintenant de toute façon ?)

Oui, ces définitions de conteneurs sont dans un docker-compose.

Il n’y a actuellement aucun paramètre d’environnement dans le conteneur ember-cli.

Vous construisez le conteneur avec le lanceur avec les éléments de Servir Discourse à partir d’un sous-dossier (préfixe de chemin) au lieu d’un sous-domaine avant de faire lancer docker-compose ?

Quel est le proxy ? Peut-être lancer Discourse avec le lanceur et utiliser docker-args pour définir d’autres éléments nécessaires ? Pour Traefik, je fais quelque chose comme ceci :

        --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 « J'aime »

Non, j’utilise juste une image Docker Discourse (version 2.8.9).

(en fait, l’image est hébergée localement, mais c’est à peu près :slight_smile:

  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

Hmm. Dans ce cas, je ne peux pas expliquer comment cela a fonctionné. Je pense que vous devez créer une image avec un lanceur qui ajoute les éléments pour prendre en charge les installations dans des sous-dossiers.

Résolu.

C’est ma faute de ne pas avoir ajouté ceci au conteneur Ember CLI (il était déjà sur le conteneur Rails) :

DISCOURSE_RELATIVE_URL_ROOT: "/board"

Oups :sweat_smile:

Pour information, le fichier clé dans la source est je crois celui-ci :

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.