프로덕션 환경 자동 배포

안녕하세요,
저는 두 개의 별도 Azure VM(스테이징 및 프로덕션)에 Discourse를 설치해 놓고 있습니다. 스테이징 Discourse의 변경 사항을 프로덕션 Discourse로 자동으로 배포할 수 있는 방법이 있을까요?

UI 변경 사항(테마)은 Git 저장소에서 관리되므로 프로덕션으로 배포하는 데는 문제가 되지 않을 것입니다. 주요 관심사는 Discourse 설정 및 구성을 프로덕션 환경으로 자동 배포하는 것입니다. 이를 어떻게 실현할 수 있을까요?

스테이징 컨테이너를 저장소(repo)에 푸시한 후 프로덕션에서 실행할 수 있습니다. ./launcher start-cmd app 명령을 실행하면 Docker에서 컨테이너를 시작하는 데 필요한 정보가 제공됩니다.

또한 데이터베이스 마이그레이션(완전한 제로 다운타임을 원한다면 SKIP_POST_DEPLOYMENT_MIGRATIONS를 사용하여 먼저 실행한 후, 새 컨테이너가 시작되면 다시 실행하는 방식)과 에셋 사전 컴파일을 수행해야 합니다.

일부 설정은 데이터베이스에 저장됩니다. 다른 설정은 DISCOURSE_SETTING_NAME과 같은 환경 변수로 설정할 수 있습니다(예: DISCOURSE_TITLE='my great communiyt').

더 가벼운 전략은 다음을 사용하는 것입니다:

우측 상단의 "오버라이드된 항목만 표시"를 확인하세요.

이것은 기본값이 아닌 항목들의 목록을 제공하며, 이 항목들을 수동으로 이전할 수 있습니다.

필요에 따라 이 방식이 더 간단할 수 있습니다. (참고로, 수년 된 인스턴스에서 기본값이 아닌 설정이 100개 이상 있습니다.)

app.yml 파일을 부분적으로 복사할 수 있습니다.

물론 카테고리 등은 이전되지 않습니다.

이것을 스탠드얼론(standalone) 방식으로 구현할 수 있나요, 아니면 두 개의 컨테이너(데이터베이스용 하나, 웹용 하나)가 필요한가요?

취미용이 아니라면, 새 컨테이너를 시작할 때 데이터베이스를 종료해야 하므로 제로 다운타임이 불가능합니다. 따라서 두 개의 컨테이너를 사용하는 것을 권장합니다. 단, 단일 컨테이너로도 작동은 가능합니다.