Instalação de subpasta Docker não funciona devido a erro de proxy Ember-CLI?

(Marquei isso como unsupported-install, mas agradeceria a opinião de um guru de qualquer forma :slight_smile:)

Caros, estou tentando executar uma imagem básica do Discourse em uma configuração simples de contêiner Docker multi-docker via Docker Compose.

Aqui estão os básicos:

  • O fórum está em uma subpasta, vamos chamá-la de /board, então (https://blah.com/board)
  • O nginx está passando chamadas para /board:443 para localhost:4000.
  • O Discourse rails estava rodando na porta 4000 (porque 3000 está sendo usado por outra coisa)
  • Incluído nos ENVs do Rails está uma configuração crucial que configura isso para funcionar:
    DISCOURSE_RELATIVE_URL_ROOT: “/board”

Agora atualizei a versão do Discourse (pré Ember-CLI) e as coisas não estão mais funcionando.

Então, é claro, adicionei um contêiner para Ember-CLI que executa:

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

Então o Ember agora está lidando com as chamadas que chegam na porta 4000 em primeira instância.

Movi o contêiner Discourse rails para a porta 4200 e iniciei as coisas.

Primeiro as boas notícias:

  • Fazer curl do site de desenvolvimento funciona!

Agora as más notícias:

  • Não funciona no navegador, por quê?:
    porque aparentemente está tentando alcançar o Discourse, mas solicitando:
    /bootstrap.json
    dando o erro:
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

em vez de
/board/bootstrap.json (que retorna dados).

Se em vez disso eu usar esta configuração:

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

Eu recebo um erro do Rails:

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

No entanto, não muito longe, ele me fornece:

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

Que é exatamente o caminho que eu estava tentando alcançar?

Como faço para tornar o Ember inteligente o suficiente para fazer proxy para a subpasta quando estiver tentando obter as informações de bootstrap?, ou seja:

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

Lembre-se, neste caso, o Ember está rodando em seu próprio contêiner.

1 curtida

Como você está construindo o contêiner? Você está iniciando esse contêiner a partir do docker-compose?

Havia . . . uh, alguma configuração de ambiente . . . que poderia ser usada para tentar impedir o funcionamento do ember-cli; você removeu isso? (Acho que agora está ignorado de qualquer forma?)

Sim, essas definições de contêiner estão em um docker-compose.

Atualmente, não há configurações de ambiente no contêiner ember-cli.

Você está construindo o contêiner com o launcher com as coisas de Servir Discourse de uma subpasta (prefixo de caminho) em vez de um subdomínio antes de fazer o docker-compose para iniciá-lo?

O que é o proxy? Talvez apenas iniciar o discourse com o launcher e usar docker-args para definir outras coisas que são necessárias? Para o traefik, eu faço algo assim:

        --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 curtida

Não, estou apenas usando uma Imagem Docker do Discourse (versão 2.8.9).

(na verdade, a imagem está hospedada localmente, mas é 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

Hmm. Nesse caso, não consigo explicar como funcionou. Acho que você precisa criar uma imagem com um lançador que adicione as coisas para dar suporte a instalações em subpastas.

Resolvido.

Minha falha por não adicionar isso ao container do Ember CLI (já estava no container do Rails):

DISCOURSE_RELATIVE_URL_ROOT: “/board”

Opa :sweat_smile:

Para sua informação, o arquivo chave na origem é, acredito eu, este:

3 curtidas

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