컨테이너 이름 관리자 플러그인 (시스템 관리자 유틸리티)

이 Discourse 관리자 플러그인은 메인 앱 yml 파일에 지정된 컨테이너 이름을 관리자 페이지의 백업 탭에 추가하는 기능입니다. 이 유틸리티 플러그인은 멀티 컨테이너 구성을 실행하는 Discourse 시스템 관리자에게 유용하며, 어떤 컨테이너가 실행 중인지 한눈에 확인하고자 하는 경우 특히 도움이 됩니다.

스크린샷

이것은 단순한 플러그인이며, 제가 공개적으로 공유하는 첫 번째 플러그인이므로 개선에 대한 의견과 PR을 매우 환영합니다. 컨테이너 정보는 yml 파일의 환경 변수에서 가져오며, 예를 들어 다음과 같습니다:

  • DISCOURSE_CONTAINER_MAIN
  • DISCOURSE_CONTAINER_DATA

저희는 여러 컨테이너를 동시에 라이브로 실행하여 Discourse 컨테이너를 재빌드하고 리버스 프록시 구성을 변경하여 제로 다운타임으로 전환할 수 있습니다. 따라서 저희에게는 docker ps에서 가져오는 것보다 이 값을 yml 파일에 하드코딩하는 것이 더 나은 선택이었습니다. docker ps는 리버스 프록시 구성에서 활성화된 컨테이너를 알 수 있는 방법이 없기 때문입니다.

TODO

Discourse 전문가들에 비해 제 Ember 실력은 아직 부족합니다(Ember 학습 중). 따라서 두 가지 영역에서 문제가 발생하여 최소 두 개의 오픈 TODO가 있으며, 관심 있는 분이라면 PR을 환영합니다:

  1. Discourse 앱(GUI)이 실행 중인 상태에서 컨테이너를 전환할 때(리버스 프록시 구성 변경을 통해) 페이지를 새로고침해야 합니다(또는 플러그인을 비활성화했다가 다시 활성화해야 합니다). 계산 속성(computed property)이 자동으로 업데이트되도록 만드는 데 실패했습니다(여러 가지 다른 기법을 시도해 보았으나).

  2. I18N이 예상대로 작동하지 않아 <span> 요소가 로케일 구성에 있는 대신 JS 코드에 하드코딩되어 있습니다(다만 초안 플레이스홀더는 존재합니다).

언급했듯이, 저는 아직 Discourse 플러그인 초보자이므로 PR을 환영합니다!

의견 및 업데이트도 여기에 환영합니다:

PR 환영합니다!

8개의 좋아요

이 플러그인은 정말 유용해 보이네요.
감사합니다!

3개의 좋아요

리버스 프록시를 통해 컨테이너가 전환될 때 Ember가 계산된 속성(computed properties)을 통해 반응적으로 작동하도록 만드는 방법에 대해서는 잘 모르겠습니다. 정말 흥미로운 주제네요. 성공하시길 바랍니다.

방금 직접 테스트해 보았는데, 리버스 프록시 설정을 변경하여 컨테이너를 전환한 후 플러그인을 끄고 다시 켜니 업데이트가 되는 것을 확인했습니다.

어쨌든… 이 유용한 유틸리티 플러그인을 만들어 주셔서 감사합니다 @neounix

향후 개선 사항을 기대하겠습니다.

2개의 좋아요

감사합니다. 하지만 현실적으로는 대부분의 Discourse 인스턴스(메타 포럼의 게시물들을 바탕으로 한 추측)가 리버스 프록시 없이 단일 컨테이너로 실행되고 있기 때문에(표준 Discourse 지원 구성), 이 유틸리티는 모든 Discourse 시스템 관리자 중 1% 미만에게만 유용할 가능성이 큽니다.

네, 다양한 방법을 많이 시도해 보았습니다. 제 경우의 문제는 Discourse 플러그인 개발에 대해 “극도의 초보” 수준이라, Ruby에서 yml의 GlobalSetting 환경 변수를 읽을 수는 있었지만 플러그인의 나머지 부분은 JavaScript로 작성되어 있다는 점이었습니다.

또한 플러그인을 100% Ruby로 다시 작성하는 것도 고려해 보았지만, 아직 그 방향으로 가지 않은 이유는 누군가가 더 나은 아이디어를 제시하거나, 리버스 프록시 전환 상황에서 컨테이너 정보를 반응형으로 만드는 방법(앱 재시작(플러그인 재초기화)이 필요하지 않도록)을 PR로 제출해 주기를 기대하고 있기 때문입니다.

댓글 남겨 주셔서 감사합니다.

2개의 좋아요