(이 게시물을 unsupported-install 태그로 달았지만, 어떤 경우든 고수의 조언을 듣고 싶습니다
)
여러분, 저는 Docker Compose를 통해 비교적 단순한(?) 멀티 도커 컨테이너 환경에서 기본 Discourse 이미지를 실행해 보려 하고 있습니다.
기본적인 설정은 다음과 같습니다:
- 포럼은 서브폴더에 위치해 있으며, 이를
/board라고 부르겠습니다. 즉 (https://blah.com/board) - nginx는
/board:443으로 들어오는 요청을localhost:4000으로 전달하고 있습니다. - Discourse Rails는 포트 4000에서 실행되었습니다. (3000 포트는 다른 서비스에서 사용 중이므로)
- Rails ENV에는 이 설정을 작동하게 하는 중요한 설정이 포함되어 있습니다:
DISCOURSE_RELATIVE_URL_ROOT: “/board”
이제 Discourse 버전을 업데이트(Ember-CLI 이전 버전)했는데, 더 이상 작동하지 않습니다.
그래서 당연히 Ember-CLI 컨테이너를 추가했는데, 실행 명령은 다음과 같습니다:
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://localhost:4200"
이제 Ember가 4000 포트에서 들어오는 요청을 가장 먼저 처리하게 됩니다.
Discourse Rails 컨테이너를 포트 4200으로 옮기고 시작했습니다.
먼저 좋은 소식부터:
- 개발 사이트로 curl을 보내면 작동합니다!
이제 나쁜 소식:
-
브라우저에서는 작동하지 않습니다. 왜일까요?:
Apparently Discourse에 접근하려 하지만 다음을 요청하고 있기 때문입니다:
/bootstrap.json
다음과 같은 오류가 발생합니다:
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
대신
/board/bootstrap.json (이것은 데이터를 반환합니다)를 요청해야 합니다.
대신 이 설정을 사용하게 되면:
discourse-ember:
command: bin/ember-cli --port 4000 --proxy "http://0.0.0.0:4200/forum"
Rails 오류가 발생합니다:
Routing Error
No route matches [GET] "/forum"
그런데 불과 몇 줄 아래에서 이렇게 제공해 줍니다:
bootstrap_path GET /bootstrap(.:format)
bootstrap#index {:format=>/(json|html|\*\/\*)/}
이것이 제가 도달하려고 했던 정확한 경로인데 말이죠?
Ember가 bootstrap 정보를 가져오려 할 때 서브폴더로 프록시하도록 어떻게 만들 수 있을까요? 즉:
http://0.0.0.0:4200/forum/bootstrap.json
이 경우 Ember는 자체 컨테이너에서 실행되고 있다는 점을 기억해 주세요.