(Etiquetado como unsupported-install pero agradecería la opinión de un gurú de todos modos
)
Chicos, estoy intentando ejecutar una imagen básica de Discourse en una configuración de contenedor múltiple Docker simple-ish(?) a través de Docker Compose.
Aquí están los conceptos básicos:
- El foro vive en una subcarpeta, llamémosla
/board, por lo tanto (https://blah.com/board) - nginx está pasando las llamadas a
/board:443alocalhost:4000. - Discourse rails se estaba ejecutando en el puerto 4000 (porque 3000 está siendo utilizado por otra cosa)
- Incluido en los ENVs de Rails hay una configuración crucial que hace que esto funcione:
DISCOURSE_RELATIVE_URL_ROOT: “/board”
Ahora he actualizado la versión de Discourse (pre Ember-CLI) y las cosas ya no funcionan.
Así que, por supuesto, agrego un contenedor para Ember-CLI que ejecuta:
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://localhost:4200"
Así que Ember ahora está manejando las llamadas que llegan al puerto 4000 en primera instancia.
Muevo el contenedor de Discourse rails al puerto 4200 y lo pongo en marcha.
Primero las buenas noticias:
- ¡hacer curl al sitio de desarrollo funciona!
Ahora las malas noticias:
- No funciona en el navegador, ¿por qué?:
porque aparentemente está intentando llegar a Discourse pero solicitando:
/bootstrap.json
dando el error:
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
en lugar de
/board/bootstrap.json (que devuelve datos).
Si en cambio uso esta configuración:
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://0.0.0.0:4200/forum"
Obtengo un error de Rails:
Routing Error
No route matches [GET] "/forum"
Sin embargo, no muy lejos, me proporciona:
bootstrap_path GET /bootstrap(.:format)
bootstrap#index {:format=>/(json|html|\*\/ \*)/}
¿Que es exactamente la ruta que estaba intentando alcanzar?
¿Cómo hago que Ember sea lo suficientemente inteligente como para hacer proxy a la subcarpeta cuando intenta obtener la información de bootstrap?, es decir:
http://0.0.0.0:4200/forum/bootstrap.json
Recuerda, en este caso, Ember se está ejecutando en su propio contenedor.