Como faço para atualizar o Discourse em uma configuração de múltiplos contêineres?

Olá! Acabei de configurar uma instalação do Discourse com vários containers e estou me perguntando qual seria o melhor método de atualização.

A documentação diz:

Minimize o tempo de inatividade ao atualizar para novas versões do Discourse. Você pode inicializar novos processos da web enquanto seu site está em execução e, apenas após a construção, substituir pela nova imagem.

Ao ler isso, fico me perguntando se isso significa que é seguro executar uma versão anterior do Discourse ao vivo enquanto outro container é atualizado?

Por exemplo:

Digamos que eu tenha dois containers apenas para web rodando em VMs separadas atrás de um balanceador de carga. Retiro uma das instâncias do container do balanceador de carga e executo o bootstrap na versão mais recente. A versão antiga continua em serviço com tempo de inatividade zero (isso está correto?). Em seguida, restabeleço o container atualizado no balanceador de carga e repito o processo no outro container.

Parece estar certo, não é?

1 curtida

Isso está correto. Para atualizações com tempo de inatividade zero, você precisa inicializar o novo container com SKIP_POST_DEPLOYMENT_MIGRATIONS: 1, depois iniciá-lo e, após os containers antigos deixarem de rodar, executar SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate. Caso contrário, a inicialização pode (embora não aconteça em todas as atualizações) deixar o banco de dados em um estado que o container antigo não consegue mais utilizar.

1 curtida

Isso é incrível! Migrações de banco de dados eram exatamente minha preocupação, então é útil saber como controlá-las!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.