Atualizando quando o espaço parece baixo: parar o app, depois limpar, depois reconstruir o app?

Olá, pessoal. Esta parece uma pergunta boba, mas vou fazê-la mesmo assim.

Fiquei preso neste loop familiar:

  1. Atualização falhou.
  2. Tentei ./launcher rebuild app, mas não havia espaço em disco suficiente. (Menos de 5 GB livres.)
  3. Executei ./launcher cleanup, que pareceu liberar algum espaço em disco. (Mais de 5 GB livres.)
  4. VOLTE AO PASSO 2.

Como ainda não sei quais operações são seguras (ou seja, não destruirão os dados do meu site), fiquei andando nervosamente, esperando não precisar restaurar de um backup. Acabei fazendo o seguinte e pareceu funcionar para mim:

  1. Executei ./launcher stop app
  2. Executei ./launcher cleanup, que limpou significativamente mais espaço do que antes, o que me deixou imediatamente nervoso.
  3. Executei git pull
  4. Executei ./launcher rebuild app

Isso não só funcionou, mas resultou em um site em funcionamento com os dados intactos e com mais espaço livre do que eu tinha anteriormente, aproximadamente 2 GB.

Agora não tenho certeza se o que fiz foi brilhante, óbvio ou arriscado e apenas aconteceu de funcionar. Gostaria de entender um pouco melhor por que obtive os resultados que obtive e se essa foi uma maneira sensata de atualizar.

Muito obrigado.

1 curtida

O docker cria um monte de arquivos quando constrói um contêiner (incluindo os contêineres que ele constrói) quando você constrói um novo contêiner, você ainda tem os contêineres antigos (e também imagens de disco). É isso que é removido quando você faz uma limpeza.

É um pouco mais seguro executar o comando de limpeza enquanto o discourse está em execução, porque o comando de limpeza não excluirá um contêiner em execução. Se algo der errado com a reconstrução, você ainda poderá reiniciar o contêiner antigo, se ele existir.

Portanto, eu removeria a etapa (1) acima e a etapa (3) é desnecessária porque ./launcher faz um pull (antigamente, não fazia).

Poderia estar errado, mas isso não resultaria nas mesmas duas etapas do primeiro bloco que não estavam funcionando? (2-4):

Em tempo, isso parece um pouco com mais deste tópico:

2 curtidas

Opa. Sim. Eu não tinha relido isso.

Então, sim, se o seu espaço em disco estiver tão apertado que você não tenha espaço para duas imagens, então você precisa destruir todas elas antes de construir uma nova, o que o coloca em uma situação ruim se, por algum motivo, você não conseguir construir uma nova imagem. Nesse caso, você realmente precisa de mais espaço em disco. A coisa mais fácil a fazer é mover backups para o S3.

1 curtida

Estou surpreso com “espaço em disco tão apertado” na minha situação. Eu executo a limpeza, tenho 7,9 GB livres, então executo ./launcher rebuild app e ele se recusa a terminar. 7,9 GB livres quando quero reconstruir o aplicativo é realmente tão pouco?!

(ATUALIZAÇÃO: Agora entendo como isso pode acontecer. Deixo isso aqui para que Curiosos o encontrem em uma pesquisa na web. Por favor, leiam todo este tópico, pessoal!)

Obrigado! Este é de fato o problema! E este parece ser o ponto saliente: "Less than 5GB of free space" — not true! 👀 - #3 by Simon_Manning

Particularmente:

Para esta reconstrução específica, você precisou baixar uma nova imagem base

Seria particularmente útil incluir esta informação de alguma forma no processo de atualização, seja como um aviso antecipado “Precisamos baixar uma nova imagem base, então você provavelmente precisa de 3 GB a mais de espaço do que o normal para atualizar. Se ficar sem espaço, é provavelmente por isso.” ou como um erro mais detalhado quando o processo de atualização/reconstrução fica sem espaço. Caso contrário, acabamos em um loop infinito de “Pronto! Há todo o espaço que você (parece) precisar!” (Picard com o braço estendido.)

Também seria particularmente útil não ter que cavar tanto para encontrar a opção de usar ./launcher rebuild app --skip-prereqs quando você quer dizer “Confie em mim, cara. Tenho espaço em disco suficiente.” Sim, coloque avisos em negrito, vermelho, fonte 72.

Esta “nova imagem base que torna a atualização complicada” acontece com pouca frequência para que a esqueçamos, mas causa problemas durante a atualização. Onde é o local apropriado para um artigo sobre isso que centralize o que sabemos sobre como contornar os problemas?

Obrigado.

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