A manutenção do site com “./launcher rebuild app” leva algum tempo para reconstruir totalmente o site (instalando novos plugins, etc. do git).
Existe alguma maneira recomendada de mostrar uma página estática dizendo “Em manutenção” enquanto reconstruo o discourse?
O que eu pensei foi usar o nginx. Isso envolve parar o docker para servir na porta 80 e deixar o nginx reverse proxy assumir e redirecionar o tráfego para o container docker ou para minha página estática.
Estou pensando em fazer isso editando manualmente o nginx.conf para o seguinte sempre que necessário,
A maneira que eu acho melhor e mais fácil é usar uma configuração de dois contêineres para que você possa construir um novo contêiner enquanto o antigo está em execução. Dessa forma, o tempo de inatividade é muito menor. Outros acham que executar um servidor web extra é mais fácil.
Grandes atualizações de banco de dados acontecem menos de uma vez por ano. Pequenas atualizações de banco de dados não demoram muito e você pode reconstruir o contêiner de dados, destruir e iniciar o contêiner web em poucos minutos. Parece que algumas pessoas preferem ter uma mensagem bonita dizendo que o site está fora do ar em vez de reduzir o tempo de inatividade, então um segundo contêiner é o caminho a seguir.
Na verdade, talvez a solução mais fácil seja ter apenas um segundo contêiner nginx com uma mensagem de “voltamos logo” que você executaria manualmente enquanto fazia uma atualização, como
./launcher stop app
docker run nginx --name back-soon # e mais algumas coisas para ver que uma página foi servida
./launcher bootstrap app
./launcher destroy app
docker stop back-soon
./launcher start app
Mas então você tem que obter um certificado e mantê-lo atualizado para o contêiner back-soon, o que é complicado.