웹 전용 - 각 컨테이너마다 별도의 이미지가 필요한가요?

여러분 안녕하세요.

사소하다고 생각했지만 명확한 답변을 찾지 못해서 여기에 질문합니다.

웹 전용 컨테이너의 경우, 이러한 컨테이너들이 공유해야 하는 단일 이미지를 어떻게 생성하고 사용해야 할까요?

그것은 분명히 합리적이어야 합니다. 모든 것이 외부에 있는(특히 저사양 VM에서 예산이 부족한 경우) 이러한 “슬림한” Discourse 컨테이너가 각각 자체 Docker 이미지를 가진다는 것은 제 생각에는 말이 되지 않잖아요?

이러한 단순하고(보편적인?) 시나리오에 대한 “명백한” 문서나 사용법을 놓치고 있는 건 아닌지 궁금합니다.
감사합니다.

네, 단일 Postgres를 여러 Discourse 사이트에서 사용할 수 있습니다. 다만 멀티사이트(Multisite configuration with Docker 참조)를 사용하지 않는 한, 각 사이트에는 별도의 Redis가 필요합니다.

또 다른 데이터베이스를 생성하고, 두 번째 웹 컨테이너가 'Discourse’라는 이름의 데이터베이스 대신 해당 데이터베이스를 사용하도록 구성해야 합니다.

시간 내어 시도해 주셔서 감사합니다. 하지만… 제가 원하는 답변은 아닙니다.
다시 한번 시도해 보겠습니다. 또 실패한다면 용서해 주세요..
제가 다음을 실행할 때:
→ $ ./launcher bootstrap a.forum.xyz # 또는 유사한 명령어
프로세스가 다음을 생성합니다:

-> $ docker images
REPOSITORY                        TAG                 IMAGE ID       CREATED        SIZE
local_discourse/a.forum.xyz        latest              d7a7b6509811   2 hours ago    4.19GB

그리고 이는 서로 다른/새로운 포럼을 위해 launcher를 실행할 때마다 매번 발생합니다.
결국 동일한 discourse 이미지가 여러 개가 됩니다. 저만 이런 현상을 겪고 있고, 결과는 다르게 나와야 하는 건가요?
저만의 문제가 아니라면, 그리고 이것이 의도적이고 예상되는 결과라면, 저는 개발자가 아니고 관련 프로세스에 대한 지식이 없어서 단정할 수는 없지만, 정말로 극도로 낭비적이라고 생각합니다(특히 web-only 컨테이너의 경우). 그렇지 않나요?

제가 기대했던 것은 - 처음 discourse를 시도했을 때 - 거의 모든 다른 소프트웨어, 즉 dockerized된 모든 소프트웨어가 하는 것과 같은 것이었습니다. 즉, 하나의 이미지를 가져와서 그 위에서 여러 컨테이너를 실행하는 것이죠. discourse는 그렇게 할 수 없는 건가요?

다른 사이트별로 동일한 컨테이너를 다른 설정으로 사용하려면 다음 명령을 실행하여 시작 매개변수를 확인할 수 있습니다.

./launcher start-cmd

다른 사이트에서 실행하기 위해 이 매개변수를 변경할 수 있습니다. 각 사이트마다 데이터베이스와 redis가 여전히 필요합니다.

사이트 테마의 고유한 복사본을 포함하며, 여기에는 JS, CSS 및 기타 유형의 자산이 포함됩니다.

또한 플러그인과 그 종속성의 고유한 조합도 포함됩니다.

긴 역사적인 배경이 있지만, Discourse와 대부분의 툴링은 Docker compose와 같은 것보다 먼저 나왔습니다.

우리는 ‘whole kitchen sink’(모든 것을 담은) 컨테이너를 제공하며, 여기에는 몇 가지 트레이드오프가 있습니다. 그중 하나는, 상태가 있는(stateful) 컨테이너 덕분에 웹 기반의 원클릭 업데이트와 같은 기능을 사용할 수 있다는 점입니다.

오늘날 컨테이너가 일반적으로 배포되는 방식인 더 현대적인 접근 방식에서 보면, 이는 확실히 큰 차이점입니다. 이 주제는 Can Discourse ship frequent Docker images that do not need to be bootstrapped?에서 길게 논의되고 있으며, 읽어볼 가치가 있습니다.

결국, 우리의 현재 상황은 기술에 약간만 관심이 있고, SSH 세션에서 명령어를 복사해서 붙여넣고 DNS를 설정할 수는 있지만, 리눅스 컨테이너의 전문가가 아닌 사람들에게 잘 작동합니다.

그리고 리눅스 컨테이너의 고수(블랙벨트)들에게는, 그 부트스트랩된 이미지를 가져와 레지스트리에 배포하고 좋아하는 컨테이너 오케스트레이션 소프트웨어에서 재사용할 수 있다고 말할 수 있습니다.

하지만 위 두 유형 사이의 사람들은 가장 큰 고통을 느낍니다.

해당 가이드에서 여러 인스턴스에서 하나의 Redis를 사용하는 방법에 대한 설명을 찾지 못했는데, 멀티사이트 구성이 사용 가능한 경우 기본적으로 작동하는 것처럼 보입니다?

제 이해가 맞는가요?
a) 멀티사이트는 동일한 docker 이미지를 여러 포럼에 사용하며, 하나의 Redis와 하나의 Postgres 서버를 사용합니다.
b) 멀티사이트를 활성화하지 않으면 Redis 키에 접두사가 추가되지 않으므로, 여러 Discourse 인스턴스(이미지가 동일하든 아니든)에서 하나의 Redis를 사용하는 것은 불가능합니다.
c) Redis 키 접두사를 강제하는 다른 방법이 없습니다.
d) 서로 다른 Discourse 이미지마다 서로 다른 Redis 키 접두사를 강제할 수 있다면 하나의 Redis 서버를 사용할 수 있습니다.
e) 일반적인 Redis 접두사를 강제하는 기능에 대한 일반적 지원은 핵심 코드의 여러 변경이 필요합니다.