Installazione sottocartella Docker non funzionante a causa di un errore proxy Ember-CLI?

(Ho etichettato questo come unsupported-install ma apprezzerei comunque l’input dei guru :slight_smile:)

Ragazzi, sto cercando di eseguire un’immagine Discourse di base in una configurazione multi-container Docker semplice-semplice(?) tramite Docker Compose.

Ecco le basi:

  • Il forum si trova in una sottocartella, chiamiamola /board, quindi (https://blah.com/board)
  • nginx sta passando le chiamate a /board:443 a localhost:4000.
  • Discourse rails era in esecuzione sulla porta 4000 (perchĂ© la 3000 è utilizzata da qualcos’altro)
  • inclusa nelle ENVs di Rails c’è un’impostazione cruciale che la configura per funzionare:
    DISCOURSE_RELATIVE_URL_ROOT: “/board”

Ora ho aggiornato la versione di Discourse (pre Ember-CLI) e le cose non funzionano piĂą.

Quindi, ovviamente, aggiungo un container per Ember-CLI che esegue:

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

Quindi Ember sta gestendo le chiamate in arrivo sulla porta 4000 in prima istanza.

Sposto il container Discourse rails alla porta 4200 e avvio le cose.

Prima le buone notizie:

  • fare un curl al sito di sviluppo funziona!

Ora le cattive notizie:

  • Non funziona nel browser, perchĂ©?
    perché apparentemente sta cercando di raggiungere Discourse ma richiedendo:

/bootstrap.json

dando l’errore:

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

invece di

/board/bootstrap.json (che restituisce dati).

Se invece uso questa configurazione:

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

ottengo un errore Rails:

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

Eppure non poche righe piĂą in lĂ , mi fornisce:

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

Che è esattamente il percorso che stavo cercando di raggiungere?

Come posso rendere Ember abbastanza intelligente da fare il proxy alla sottocartella quando sta cercando di ottenere le informazioni di bootstrap? Cioè:

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

Ricorda, in questo caso, Ember è in esecuzione nel suo container.

1 Mi Piace

Come stai costruendo il container? Stai lanciando quel container da docker-compose?

C’era . . . uh, un’impostazione dell’ambiente . . . che poteva essere utilizzata per cercare di impedire il funzionamento di ember-cli; l’hai rimossa? (Penso che ora sia comunque ignorata?)

Sì, queste definizioni di container sono in un docker-compose.

Attualmente non ci sono impostazioni di ambiente nel container ember-cli.

Stai creando il container con launcher con il materiale da Serve Discourse from a subfolder (path prefix) instead of a subdomain prima di usare docker-compose per avviarlo?

Cos’è il proxy? Forse basta avviare discourse con launcher e usare docker-args per impostare altre cose necessarie? Per traefik, faccio qualcosa del genere:

        --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 Mi Piace

No, sto solo usando un’immagine Docker di Discourse (versione 2.8.9).

(in realtà l’immagine è ospitata localmente, ma è praticamente:)

  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

In tal caso non riesco a spiegare come abbia mai funzionato. Penso che tu debba creare un’immagine con un launcher che aggiunga le cose per supportare le installazioni in sottocartelle.

Risolto.

Colpa mia per non averlo aggiunto al container Ember CLI (era giĂ  sul container Rails):

DISCOURSE_RELATIVE_URL_ROOT: "/board"

Oops :sweat_smile:

Per tua informazione, il file chiave nel sorgente è credo questo:

3 Mi Piace

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