# Atualização auto-hospedada para 3.1.0.beta2 com instalação típica multi-container requer tempo de inatividade extra

**URL:** https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916
**Category:** Self-hosting
**Created:** [25 Janeiro , 2023 20:31 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916 "2023-01-25T20:31:40Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [25 Janeiro , 2023 20:31 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/1 "2023-01-25T20:31:40Z")

</div>

Atualizei meus sites de 3.1.0.beta1 para 3.1.0.beta2, e após inicializar a nova versão, mas antes de destruir os contêineres da aplicação antiga e iniciar novos, pelo menos um desses sites começou a apresentar a página de erro genérica aos usuários.

Não notei isso no meu site de teste ou nos outros sites que administro, mas é possível que tenha acontecido e eu não tenha visto.

Em qualquer caso, para mim, em pelo menos um caso, o processo de atualização “zero downtime” não foi bem-sucedido.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [26 Janeiro , 2023 01:02 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/2 "2023-01-26T01:02:12Z")

</div>

9 posts foram divididos em um novo tópico: [Problemas com upgrade auto-hospedado para 3.x: não é possível reverter](https://meta.discourse.org/t/problems-with-self-hosted-upgrade-to-3-x-cannot-roll-back/252941)

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [26 Janeiro , 2023 01:02 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/3 "2023-01-26T01:02:55Z")

</div>

Uma postagem foi mesclada em um tópico existente: [Problemas com upgrade auto-hospedado para 3.x: não é possível reverter](https://meta.discourse.org/t/problems-with-self-hosted-upgrade-to-3-x-cannot-roll-back/252941/10)

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [26 Janeiro , 2023 00:42 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/12 "2023-01-26T00:42:53Z")

</div>

> [@supermathie](#):
>
> …@mcdanlj Você pode colar os erros que você estava recebendo?

Gostaria de repetir que eu **não** estava usando o atualizador gráfico. Eu tenho uma instalação multi-container. Eu fiz:

```plaintext
git pull
./launcher bootstrap app
./launcher destroy app && ./launcher start app
./launcher cleanup

```

(Eu uso `app` para o aplicativo web mesmo para instalações multi-container. Eu sei que não é a prática normal. Eu odeio digitar `web_only`)

Algum tempo depois que eu iniciei o `bootstrap` e antes de destruir o aplicativo, a versão antiga rodando contra o novo banco de dados mostrou apenas uma tela de erro. Eu não me lembro do conteúdo, e eu não criei uma interrupção mais longa parando para tirar um print screen antes de fazer o destroy/start, mas era apenas texto em branco e não era a página de manutenção do sistema. Eu vi isso apenas algumas vezes antes, que quando o bootstrap executa `db:migrate` como parte da reconstrução assíncrona de “zero downtime”, o software antigo ainda rodando falha devido a uma inconsistência de esquema.

O que eu vi foi o que quer que aconteça no caso de inconsistência do banco de dados. Isso é muito melhor do que continuar pacificamente, quebrando o banco de dados! Quando eu postei, foi para avisar que este era um daqueles casos raros em que a aplicação de uma atualização pontual (aqui de 3.1.0.beta1 para 3.1.0.beta2) criou uma incompatibilidade de esquema entre o código 3.1.0.beta1 e o banco de dados após a execução do `db:migrate` do 3.1.0.beta2, como acontece raramente, mas ocasionalmente com as atualizações normais de baixa interrupção na implantação multi-container.

Minha experiência é **diferente** do [erro que foi relatado com ruby no atualizador gráfico](https://meta.discourse.org/t/problems-with-self-hosted-upgrade-to-3-x-cannot-roll-back/252941). É um problema completamente não relacionado. Reconheço que minha postagem foi movida do anúncio para um tópico geral de “problemas com”, mas quero deixar claro que o motivo pelo qual a postei no anúncio foi para avisar outros auto-hospedeiros como eu quando eles vissem o anúncio que esta atualização em particular era uma que poderia ter este impacto.

Minha mensagem não foi uma reclamação sobre um bug, ou mesmo um problema. Foi destinada apenas como um aviso de um caso normal, mas infrequente, associado a esta versão em particular e não destacado nas notas de lançamento.

As reclamações sobre o gerenciador docker não reconhecer que ele não pode atualizar de dentro da imagem são completamente não relacionadas à minha tentativa de fornecer uma notificação útil para outros administradores de auto-hospedagem.

~~Faria muito sentido separar essas questões não relacionadas em tópicos independentes para problemas independentes.~~ EDIT por @supermathie: Feito

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [26 Janeiro , 2023 01:00 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/13 "2023-01-26T01:00:58Z")

</div>

> [@mcdanlj](#):
>
> o software antigo em execução falha devido a uma inconsistência de esquema

Você está fazendo uma migração de dois estágios com [Introducing Post Deployment Migration](https://meta.discourse.org/t/introducing-post-deployment-migration/98974?u=supermathie)?

Este padrão é crítico se você estiver fazendo, por exemplo, uma implantação azul/verde e precisar que a versão anterior continue funcionando.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [26 Janeiro , 2023 01:20 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/14 "2023-01-26T01:20:50Z")

</div>

> [@supermathie](#):
>
> Você está fazendo uma migração em duas etapas com [Introduzindo Migração Pós-Implantação](https://meta.discourse.org/t/introducing-post-deployment-migration/98974)?

> [@mcdanlj](#):
>
> Eu fiz:
> 
> ```plaintext
> git pull
> ./launcher bootstrap app
> ./launcher destroy app && ./launcher start app
> ./launcher cleanup
> 
> ```

Eu acho que isso responde à pergunta. O script `launcher` não tem suporte para `SKIP_POST_DEPLOYMENT_MIGRATIONS`

> [@mcdanlj](#):
>
> Minha mensagem não foi uma reclamação sobre um bug, ou mesmo um problema. Ela foi destinada apenas como um aviso de um caso normal, mas infrequente, associado a esta versão específica e não destacado nas notas de lançamento.

Novamente, **não estou relatando um bug.** Apenas tentando alertar outros com a instalação padrão multi-container usando o processo documentado normal para usar `launcher` com uma instalação multi-container que esta é diferente da experiência típica deles.

Realmente, verdadeiramente, honestamente, eu quero dizer, este não é um relatório de bug!

Se eu quiser implantação azul/verde com `launcher`, devo fornecer um PR para `launcher` para implementá-la. ☺

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [26 Janeiro , 2023 01:24 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/15 "2023-01-26T01:24:42Z")

</div>

Eu não criei o “problema” no título do tópico; isso foi feito quando meu comentário foi movido do tópico de anúncio. Modifiquei o título para deixar claro, espero, que não estou reclamando de um problema. ☺

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [26 Janeiro , 2023 01:53 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/16 "2023-01-26T01:53:15Z")

</div>

Tudo bem!

Suspeito que haja um número muito pequeno de usuários fazendo blue/green com vários contêineres, mas agradeceríamos sugestões sobre como fazer isso.

E também, como encontrar o tópico que eu linkei; suspeito que não seja fácil de encontrar se alguém não souber que ele existe.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [26 Janeiro , 2023 02:48 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/17 "2023-01-26T02:48:04Z")

</div>

Eu tinha visto a documentação do `SKIP_POST_DEPLOYMENT_MIGRATIONS`. O que eu _realmente_ tinha perdido era esta postagem que mostra como fazer implantações sem tempo de inatividade com `launcher`:

> [@Zero Downtime Upgrades](https://meta.discourse.org/t/zero-downtime-upgrades/120673/2?u=mcdanlj):
>
> We successfully performed the upgrade a couple of months ago. I’m posting our experience here for anyone who may have the same question in the future. Discourse somewhat supports zero downtime upgrades by using [post deployment migrations](https://meta.discourse.org/t/introducing-post-deployment-migration/98974). The overall process, as we understood it, can be divided in 2 steps. STEP 1: Upgrade to the new version and run safe migrations: Update all your plugins and themes to be compatible with the new version. (This is actually quite a bit of work depending on you…

Então, agora tenho que pensar sobre isso, já que sei que é viável. Se eu fizer isso, atualizarei [MKJ's Opinionated Discourse Deployment Configuration](https://meta.discourse.org/t/mkjs-opinionated-discourse-deployment-configuration/193355?u=mcdanlj) com o que eu fizer.

Tenho tido muitos problemas para me animar com isso quando estou fornecendo quatro, alguns meses quatro e meio noves de disponibilidade em um serviço que administro gratuitamente no meu tempo livre. É um testemunho da qualidade do desenvolvimento do Discourse que eu possa fazer isso com uma política de testes aprovados, incluindo coisas como o minuto extra de inatividade que vi desta vez, e às vezes reiniciando o host para atualizações de segurança.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26 Janeiro , 2023 03:54 UTC](https://meta.discourse.org/t/self-hosted-upgrade-to-3-1-0-beta2-with-typical-multi-container-install-requires-extra-downtime/252916/18 "2023-01-26T03:54:29Z")

</div>

> [@supermathie](#):
>
> suspeito que haja um número muito pequeno de usuários fazendo blue/green multi-container, mas seríamos bem-vindos a sugestões sobre como fazer isso.

O script ansible que [dashboard.literatecomputing.com](http://dashboard.literatecomputing.com) usa executa uma tarefa rake após o novo contêiner ser iniciado para fazer as migrações pós-implantação. Ele conta com `SKIP_POST_DEPLOYMENT_MIGRATIONS` ativado em web\_only.yml. Eu faço isso apenas em sites que sei que serão gerenciados por meus scripts, pois se você não entender como funciona, pode ser uma bomba-relógio.

Note que para muitas atualizações, inicializar o novo contêiner não quebrará as coisas para o contêiner em execução, mas para algumas sim. Não é incomum que uma atualização migre de tal forma que o contêiner antigo não possa usar o banco de dados (sem usar SKIP\_POST\_DEPLOYMENT\_MIGRATIONS).
