내부 커뮤니티에 Discourse를 설치하는 방법에 대해 여전히 조사 중입니다. 과거에는 외부 Redis와 외부 Postgres를 사용하여 Discourse를 설치하고, 모든 것을 Kubernetes 클러스터에서 관리하는 방법에 대해 질문한 적이 있습니다. 자세한 내용은 여기에서 확인하실 수 있습니다.
이제 또 다른 의문이 생겼는데, helm을 사용하여 배포하려면 자체 컨테이너 이미지를 생성해야 한다는 말을 들었기 때문입니다. 이로 인해 클라우드 설치 가이드에 포함된 스크립트를 사용하여 공식 문서대로 설치를 수행할 수 없을 것 같습니다.
bootstrap 명령어를 사용하여 자체 이미지를 빌드해 보았지만, ruby 템플릿을 찾지 못해 오류가 발생하여 제가 직접 docker 이미지를 실행할 수 없습니다.
제공된 스크립트를 사용하지 않고 컨테이너 이미지를 실행할 수 있을까요? bash 스크립트를 살펴보려고 했지만 제 수준에는 좀 너무 복잡한 것 같습니다. 이런 상황에 처해 본 다른 분이 있다면 조언을 주실 수 있을지 희망하고 있습니다.
더 많은 맥락과 세부 정보를 제공하겠습니다.
저는 런처 스크립트의 bootstrap 명령을 사용하여 제 설정이 포함된 이미지를 직접 생성했습니다.
그런 다음 문서에서는 컨테이너를 생성하려면 run 명령으로 런처를 실행해야 한다고 안내합니다.
스크립트 코드를 살펴보니 docker 명령은 다음과 같습니다:
하지만 스크립트 없이 단독으로 실행할 수 있는 명령어로 모든 변수를 변환하는 방법을 알 수 없습니다. 아니면 처음부터 제가 시도하고 있는 접근 방식이 잘못된 것일 수도 있지만, 다른 사람에게 부담을 주지 않고 혼자서 해결할 수 있는지 확인해 보고 싶어서 먼저 시도해 보았습니다.
제가 직접 docker 이미지를 실행하면 컨테이너가 종료되고, 로그를 보면 다음과 같은 내용이 표시됩니다:
Already up to date.
INFO -- : Loading --stdin
/pups/lib/pups/config.rb:23:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
from /pups/lib/pups/cli.rb:27:in `new'
from /pups/lib/pups/cli.rb:27:in `run'
from /pups/bin/pups:8:in `<main>'
Discourse는 공유 볼륨에서 실행 중인 PostgreSQL에 의존합니다. 또한 이미지, 업로드된 파일, 백업, 로그 등 많은 중요한 파일들이 해당 공유 볼륨에 위치해 있습니다.
/shared 볼륨의 파일 시스템 무결성을 Discourse 구성 표준에 맞게 유지한다면, Discourse 도커 이미지와 컨테이너 애플리케이션을 쉽게 시작하고 중지할 수 있습니다. 그러나 Discourse 스크립트 없이 애플리케이션을 빌드하는 것은 불가능합니다(제 지식 범위 내에서). 스크립트와 완벽하게 동일하게 작동하는 지원되는 스크립트 기반의 자체 스크립트를 작성하기 위해 스크립트를 완전히 역공학하지 않는 한 말입니다. 이는 스크립트가 서버 측 기술인 Ruby on Rails 위에 클라이언트 측 기술인 정교한 EmberJS SPA(단일 페이지 애플리케이션)를 빌드하는 것을 담당할 뿐만 아니라, 코어 애플리케이션 및 모든 플러그인의 구성을 관리하기 때문입니다. 솔직히 말해, 꽤 정교한 애플리케이션입니다.
네, 스크립트 없이 Discourse 컨테이너를 시작하거나 Discourse 이미지에서 Discourse 컨테이너를 생성할 수 있습니다. 단, 데이터베이스, 이미지 및 업로드, 백업, 로그 파일 등 영구 저장 요구 사항을 포함한 Discourse 구성 표준에 부합하는 완벽하게 구축된 Discourse 도커 이미지가 이미 있는 경우(그리고 오직 그 경우에만)입니다. Discourse에는 공유 볼륨에 많은 중요한 파일이 필요합니다. 따라서 위에서 언급한 필수 사전 요구 사항(위에서 모두 언급한 것은 아닙니다!) 없이 단순히 "기본 Discourse 도커 이미지"를 가져와 실행할 수 없습니다.
(1) Ruby on Rails 개발자가 아니고 (2) EmberJS 개발자도 아닌 분들에게는 이 내용이 매우 혼란스러울 수 있습니다.
기본적으로, 당신은 도커화(dockerized)된 프로덕션 Ruby on Rails 애플리케이션(서버 측 기술)을 구축하는 것이며, 이는 세계 일급 EmberJS SPA 애플리케이션(주요 사용자 앱)의 기반이 됩니다. 그리고 그 위에, 이 환경에서 오랫동안 코딩해 온 매우 유능하고 경험이 풍부한 웹 전문가 팀이 관리하는 모든 소스 코드에 대한 완전한 오픈소스 구성 관리 시스템을 갖추게 됩니다. 또한 Discourse 비즈니스 생태계 내에서 전문 호스팅과 맞춤 개발 서비스도 이용할 수 있습니다.