제공된 스크립트 없이 Discourse를 설치하는 방법이 있을까요?

안녕하세요,

다시 한번 특이한 질문을 드리려고 합니다 :sparkles:

내부 커뮤니티에 Discourse를 설치하는 방법에 대해 여전히 조사 중입니다. 과거에는 외부 Redis와 외부 Postgres를 사용하여 Discourse를 설치하고, 모든 것을 Kubernetes 클러스터에서 관리하는 방법에 대해 질문한 적이 있습니다. 자세한 내용은 여기에서 확인하실 수 있습니다.

이제 또 다른 의문이 생겼는데, helm을 사용하여 배포하려면 자체 컨테이너 이미지를 생성해야 한다는 말을 들었기 때문입니다. 이로 인해 클라우드 설치 가이드에 포함된 스크립트를 사용하여 공식 문서대로 설치를 수행할 수 없을 것 같습니다. :cold_sweat:

bootstrap 명령어를 사용하여 자체 이미지를 빌드해 보았지만, ruby 템플릿을 찾지 못해 오류가 발생하여 제가 직접 docker 이미지를 실행할 수 없습니다.

제공된 스크립트를 사용하지 않고 컨테이너 이미지를 실행할 수 있을까요? bash 스크립트를 살펴보려고 했지만 제 수준에는 좀 너무 복잡한 것 같습니다. 이런 상황에 처해 본 다른 분이 있다면 조언을 주실 수 있을지 희망하고 있습니다.

다시 한번 모든 것에 감사드립니다 :revolving_hearts:

더 많은 맥락과 세부 정보를 제공하겠습니다.
저는 런처 스크립트의 bootstrap 명령을 사용하여 제 설정이 포함된 이미지를 직접 생성했습니다.
그런 다음 문서에서는 컨테이너를 생성하려면 run 명령으로 런처를 실행해야 한다고 안내합니다.
스크립트 코드를 살펴보니 docker 명령은 다음과 같습니다:

$docker_path run --shm-size=512m $links $attach_on_run $restart_policy "${env[@]}" "${labels[@]}" -h "$hostname" \
        -e DOCKER_HOST_IP="$docker_ip" --name $config -t "${ports[@]}" $volumes $mac_address $user_args \
        $run_image $boot_command

하지만 스크립트 없이 단독으로 실행할 수 있는 명령어로 모든 변수를 변환하는 방법을 알 수 없습니다. 아니면 처음부터 제가 시도하고 있는 접근 방식이 잘못된 것일 수도 있지만, 다른 사람에게 부담을 주지 않고 혼자서 해결할 수 있는지 확인해 보고 싶어서 먼저 시도해 보았습니다.

제가 직접 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>'

./launcher start-cmd app을 실행해 보세요.

정말 많이 도움되었습니다 :sparkling_heart:

이 명령어가 문서에 나와 있었나요? 만약 그렇다면 물어본 것 죄송합니다. 못 봤거든요.

항상 도와주셔서 정말 감사합니다 :sparkles:

Discourse는 공유 볼륨에서 실행 중인 PostgreSQL에 의존합니다. 또한 이미지, 업로드된 파일, 백업, 로그 등 많은 중요한 파일들이 해당 공유 볼륨에 위치해 있습니다.

/shared 볼륨의 파일 시스템 무결성을 Discourse 구성 표준에 맞게 유지한다면, Discourse 도커 이미지와 컨테이너 애플리케이션을 쉽게 시작하고 중지할 수 있습니다. 그러나 Discourse 스크립트 없이 애플리케이션을 빌드하는 것은 불가능합니다(제 지식 범위 내에서). 스크립트와 완벽하게 동일하게 작동하는 지원되는 스크립트 기반의 자체 스크립트를 작성하기 위해 스크립트를 완전히 역공학하지 않는 한 말입니다. 이는 스크립트가 서버 측 기술인 Ruby on Rails 위에 클라이언트 측 기술인 정교한 EmberJS SPA(단일 페이지 애플리케이션)를 빌드하는 것을 담당할 뿐만 아니라, 코어 애플리케이션 및 모든 플러그인의 구성을 관리하기 때문입니다. 솔직히 말해, 꽤 정교한 애플리케이션입니다.

네, 스크립트 없이 Discourse 컨테이너를 시작하거나 Discourse 이미지에서 Discourse 컨테이너를 생성할 수 있습니다. 단, 데이터베이스, 이미지 및 업로드, 백업, 로그 파일 등 영구 저장 요구 사항을 포함한 Discourse 구성 표준에 부합하는 완벽하게 구축된 Discourse 도커 이미지가 이미 있는 경우(그리고 오직 그 경우에만)입니다. Discourse에는 공유 볼륨에 많은 중요한 파일이 필요합니다. 따라서 위에서 언급한 필수 사전 요구 사항(위에서 모두 언급한 것은 아닙니다!) 없이 단순히 "기본 Discourse 도커 이미지"를 가져와 실행할 수 없습니다.

도움이 되기를 바랍니다.

답변 주셔서 감사합니다. 정말 도움이 많이 됩니다 :slight_smile: 어제 이 토픽과 다른 몇 가지 글에서 왜 스크립트가 필요한지에 대해 읽었습니다.

더 자세한 설명을 주셔서 다시 한번 감사드립니다. 이 모든 정보가 필요한 표준에 맞춰 제 워크플로를 만드는 데 도움이 될 것 같습니다 :slight_smile:

기꺼이 도와드리겠습니다.

(1) Ruby on Rails 개발자가 아니고 (2) EmberJS 개발자도 아닌 분들에게는 이 내용이 매우 혼란스러울 수 있습니다.

기본적으로, 당신은 도커화(dockerized)된 프로덕션 Ruby on Rails 애플리케이션(서버 측 기술)을 구축하는 것이며, 이는 세계 일급 EmberJS SPA 애플리케이션(주요 사용자 앱)의 기반이 됩니다. 그리고 그 위에, 이 환경에서 오랫동안 코딩해 온 매우 유능하고 경험이 풍부한 웹 전문가 팀이 관리하는 모든 소스 코드에 대한 완전한 오픈소스 구성 관리 시스템을 갖추게 됩니다. 또한 Discourse 비즈니스 생태계 내에서 전문 호스팅과 맞춤 개발 서비스도 이용할 수 있습니다.

정말 멋지지 않나요? :slight_smile:

이 글을 우연히 발견했습니다. 앱과 데이터베이스를 물리적으로 다른 호스트에서, 아무것도 공유하지 않는 상태로 실행할 수 없다는 말씀이신가요?

제 경우라면 이는 완전한 걸림돌이 될 것입니다…

아니요, 그렇지 않습니다. Discourse를 전용 외부 데이터베이스와 함께 실행하는 것은 지원되고 문서화된 사용 사례입니다.