“./launcher rebuild app” 명령으로 사이트 유지보수를 수행하면 사이트가 완전히 재빌드되는 데(새로운 플러그인 설치 등 git에서 가져오는 작업 포함) 시간이 좀 걸립니다.
Discourse를 재빌드하는 동안 "유지보수 중"이라는 내용을 담은 정적 페이지를 표시하는 권장 방법이 있을까요?
nginx를 사용하는 것을 고려하고 있습니다. 이를 위해서는 포트 80에서 서비스를 제공하기 위해 docker를 중지하고, nginx 리버스 프록시를 통해 트래픽을 docker 컨테이너 또는 정적 페이지로 전환하도록 설정해야 합니다.
필요할 때마다 nginx.conf를 수동으로 편집하여 다음과 같이 변경하는 방법을 생각하고 있습니다.
주요 데이터베이스 업그레이드는 1년에 한 번 미만으로 발생합니다. 소규모 데이터베이스 업그레이드는 시간이 많이 걸리지 않으며, 데이터 컨테이너를 재구성하고 웹 컨테이너를 삭제한 후 다시 시작하는 데 불과 몇 분밖에 걸리지 않습니다. 하지만 일부 사용자는 다운타임을 줄이는 것보다 사이트가 중단되었음을 알리는 깔끔한 메시지를 표시하는 것을 선호하는 것 같습니다. 이 경우 두 번째 컨테이너를 사용하는 것이 좋은 방법입니다.
사실, 가장 간단한 해결책은 업그레이드를 수행하는 동안 수동으로 실행하는 “조금만 기다려 주세요” 메시지를 표시하는 두 번째 nginx 컨테이너를 사용하는 것입니다. 예를 들어 다음과 같이요.
./launcher stop app
docker run nginx --name back-soon # 페이지가 제공되는지 확인하기 위한 추가 작업
./launcher bootstrap app
./launcher destroy app
docker stop back-soon
./launcher start app
하지만 이렇게 하면 back-soon 컨테이너에 대한 인증서를 발급받고 유지보수해야 하며, 이는 복잡합니다.