이 Discourse 관리자 플러그인은 메인 앱 yml 파일에 지정된 컨테이너 이름을 관리자 페이지의 백업 탭에 추가하는 기능입니다. 이 유틸리티 플러그인은 멀티 컨테이너 구성을 실행하는 Discourse 시스템 관리자에게 유용하며, 어떤 컨테이너가 실행 중인지 한눈에 확인하고자 하는 경우 특히 도움이 됩니다.
저희는 여러 컨테이너를 동시에 라이브로 실행하여 Discourse 컨테이너를 재빌드하고 리버스 프록시 구성을 변경하여 제로 다운타임으로 전환할 수 있습니다. 따라서 저희에게는 docker ps에서 가져오는 것보다 이 값을 yml 파일에 하드코딩하는 것이 더 나은 선택이었습니다. docker ps는 리버스 프록시 구성에서 활성화된 컨테이너를 알 수 있는 방법이 없기 때문입니다.
TODO
Discourse 전문가들에 비해 제 Ember 실력은 아직 부족합니다(Ember 학습 중). 따라서 두 가지 영역에서 문제가 발생하여 최소 두 개의 오픈 TODO가 있으며, 관심 있는 분이라면 PR을 환영합니다:
Discourse 앱(GUI)이 실행 중인 상태에서 컨테이너를 전환할 때(리버스 프록시 구성 변경을 통해) 페이지를 새로고침해야 합니다(또는 플러그인을 비활성화했다가 다시 활성화해야 합니다). 계산 속성(computed property)이 자동으로 업데이트되도록 만드는 데 실패했습니다(여러 가지 다른 기법을 시도해 보았으나).
I18N이 예상대로 작동하지 않아 <span> 요소가 로케일 구성에 있는 대신 JS 코드에 하드코딩되어 있습니다(다만 초안 플레이스홀더는 존재합니다).
감사합니다. 하지만 현실적으로는 대부분의 Discourse 인스턴스(메타 포럼의 게시물들을 바탕으로 한 추측)가 리버스 프록시 없이 단일 컨테이너로 실행되고 있기 때문에(표준 Discourse 지원 구성), 이 유틸리티는 모든 Discourse 시스템 관리자 중 1% 미만에게만 유용할 가능성이 큽니다.
네, 다양한 방법을 많이 시도해 보았습니다. 제 경우의 문제는 Discourse 플러그인 개발에 대해 “극도의 초보” 수준이라, Ruby에서 yml의 GlobalSetting 환경 변수를 읽을 수는 있었지만 플러그인의 나머지 부분은 JavaScript로 작성되어 있다는 점이었습니다.
또한 플러그인을 100% Ruby로 다시 작성하는 것도 고려해 보았지만, 아직 그 방향으로 가지 않은 이유는 누군가가 더 나은 아이디어를 제시하거나, 리버스 프록시 전환 상황에서 컨테이너 정보를 반응형으로 만드는 방법(앱 재시작(플러그인 재초기화)이 필요하지 않도록)을 PR로 제출해 주기를 기대하고 있기 때문입니다.