Docker-Unterordnerinstallation funktioniert wegen Ember-CLI-Proxyfehler nicht?

(Ich habe dies mit unsupported-install markiert, würde aber trotzdem Guru-Input schätzen :slight_smile:)

Leute, ich versuche, ein einfaches Discourse-Image in einem einfachen(?) Multi-Docker-Container-Setup über Docker Compose auszuführen.

Hier sind die Grundlagen:

  • Das Forum befindet sich in einem Unterordner, nennen wir ihn /board, also (https://blah.com/board)
  • nginx leitet Aufrufe an /board:443 an localhost:4000 weiter.
  • Discourse rails lief auf Port 4000 (da 3000 von etwas anderem verwendet wird)
  • In den Rails ENVs ist eine entscheidende Einstellung enthalten, die dies zum Funktionieren bringt:
    DISCOURSE_RELATIVE_URL_ROOT: „/board“

Jetzt habe ich die Version von Discourse aktualisiert (vor Ember-CLI) und die Dinge funktionieren nicht mehr.

Also füge ich natürlich einen Container für Ember-CLI hinzu, der Folgendes ausführt:

discourse-ember:
    command: bin/ember-cli --port 4000 --proxy "http://localhost:4200"

Also behandelt Ember die eingehenden Anrufe auf Port 4000 im ersten Moment.

Ich verschiebe den Discourse Rails Container auf Port 4200 und starte alles.

Zuerst die gute Nachricht:

  • Das Aufrufen der Entwicklungsseite funktioniert!

Jetzt die schlechte Nachricht:

  • Funktioniert nicht im Browser, warum?:
    weil es anscheinend versucht, auf Discourse zuzugreifen, aber anfordert:
    /bootstrap.json
    mit dem Fehler:
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

anstatt
/board/bootstrap.json (was Daten zurückgibt).

Wenn ich stattdessen diese Konfiguration verwende:

  discourse-ember:
    command: bin/ember-cli --port 4000 --proxy "http://0.0.0.0:4200/forum"

erhalte ich einen Rails-Fehler:

Routing Error
No route matches [GET] "/forum"

Doch nicht ein paar Zeilen weiter liefert es mir:

bootstrap_path	GET	/bootstrap(.:format)	
bootstrap#index {:format=>/(json|html|\*\/ \*)/}

Was genau der Pfad ist, den ich erreichen wollte?

Wie mache ich Ember schlau genug, um zum Unterordner zu proxen, wenn es versucht, die Bootstrap-Informationen abzurufen?

http://0.0.0.0:4200/forum/bootstrap.json

Denken Sie daran, dass Ember in diesem Fall in seinem eigenen Container läuft.

1 „Gefällt mir“

Wie bauen Sie den Container? Starten Sie diesen Container mit docker-compose?

Es gab . . . äh, eine Umgebungseinstellung . . ., die verwendet werden konnte, um zu versuchen, ember-cli daran zu hindern, zu funktionieren; haben Sie diese entfernt? (Ich glaube, sie wird jetzt sowieso ignoriert?)

Ja, diese Container-Definitionen befinden sich in einer docker-compose.

Derzeit gibt es keine Umgebungseinstellungen im ember-cli-Container.

Erstellst du den Container mit dem Launcher mit den Dingen aus Serve Discourse from a subfolder (path prefix) instead of a subdomain, bevor du docker-compose startest, um ihn zu starten?

Was ist der Proxy? Vielleicht einfach Discourse mit dem Launcher starten und docker-args verwenden, um andere benötigte Dinge einzustellen? Für Traefik mache ich etwas Ähnliches:

        --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 „Gefällt mir“

Nein, ich benutze nur ein Discourse Docker Image (Version 2.8.9).

(eigentlich ist das Image lokal gehostet, aber es ist so ziemlich:)

  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. In diesem Fall kann ich nicht erklären, wie es jemals funktioniert hat. Ich denke, Sie müssen ein Image mit einem Launcher erstellen, der die Dinge hinzufügt, um Unterordnerinstallationen zu unterstützen.

Gelöst.

Mein Fehler, dass ich dies nicht zum Ember CLI-Container hinzugefügt habe (es war bereits im Rails-Container):

DISCOURSE_RELATIVE_URL_ROOT: „/board“

Ups :sweat_smile:

Zu Ihrer Information, die Schlüsseldatei in der Quelle ist meiner Meinung nach diese:

3 „Gefällt mir“

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