Infelizmente, simplesmente executar
./launcher start app
não traz o fórum de volta.
De qualquer forma, fiz mais experimentos. Especificamente, tentei executar manualmente o comando yarn com falha na imagem do docker:
./launcher enter app
cd /var/www/discourse
su discourse
yarn install --frozen-lockfile
... falha com o mesmo timeout ...
yarn config set network-timeout 600000 -g
yarn install --frozen-lockfile
... succeeds ...
Isso confirma que aumentar o timeout resolve o problema.
A questão restante, então, é como aumentar o timeout também durante ./launcher rebuild app.
O arquivo web.template.yml está de fato localizado em discourse/containers fora da imagem do docker. Eu não o encontrei inicialmente, porque minha instalação do Discourse está em um local não padrão, não em /var/discourse.
A correção mencionada na postagem referenciada acima se refere à linha 159, mas isso não parece mais correto, provavelmente devido a atualizações. Existem, no entanto, estas linhas por volta da linha 188:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
A postagem sugere inserir uma nova seção para definir o timeout, mas não fornece instruções específicas sobre como fazer isso. Não sou muito familiarizado com yaml, pups e yarn ou como eles são usados no Discourse, então não quis adivinhar. Em vez disso, tentei esta alteração na seção original:
- exec:
cd: $home
hook: yarn
cmd:
- |
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'
O comando ./launcher rebuild app agora leva muito tempo (mais de duas horas!, muito mais tempo do que costumava levar). A boa notícia é que o fórum está de volta online! Ótimo, obrigado pela ajuda.
Existe uma maneira de aumentar o timeout adicionando um comando a containers/app.yml? Isso seria conveniente, pois manteria todas as minhas personalizações juntas em um único arquivo.
Usar uma configuração de 2 contêineres parece uma ótima ideia; eu não estava ciente de que isso era possível. Acho que você está se referindo a isto: Move from standalone container to separate web and data containers; vou tentar. Qualquer conselho adicional é bem-vindo.
Quando executo uma atualização da minha instância do Discourse pelo navegador, ela também executa ./launcher rebuild app? Ela tira o fórum do ar temporariamente? Até agora, eu tinha a impressão de que o fórum permanecia online durante a maior parte do processo, mas não tenho certeza. Essas coisas nunca foram claras para mim e eu nunca tive tempo de realmente descobri-las. Quaisquer respostas ou indicações para mais informações são bem-vindas.