Ok, eis como conseguimos consertar (Não é para os fracos de coração)
- Atualize o Ubuntu para uma versão que suporte Docker 20+
Estávamos no Ubuntu 16, tive que ir para pelo menos o Ubuntu 20, então fizemos essa atualização duas vezes
RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
- Assim que chegamos ao Ubuntu 20, tivemos que atualizar o Docker, o que o Ubuntu se recusou a fazer por conta própria.
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Adicione o repositório às fontes do Apt:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release & echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- Isso nos levou ao docker 28
- Em seguida, execute
./launcher rebuild app
- Isso atualizará seu postgress de 13 para 15, veja:
PostgreSQL 15 update - Assim que o banco de dados foi atualizado com sucesso, executamos
./launcher rebuild app
- Isso gerou um erro sobre coluna ausente
2025-05-18 14:58:28.208 UTC [1455] discourse@discourse ERROR: column "require_message" does not exist at character 72
2025-05-18 14:58:28.208 UTC [1455] discourse@discourse STATEMENT: SELECT id, name, name_key, description, notify_type, auto_action_type, require_message, applies_to, position, enabled, score_type FROM "flags" ORDER BY "flags"."position" ASC
** FALHA NO PLUGIN **
Você não pode iniciar o Discourse devido a este erro durante a inicialização do plugin:
PG::UndefinedColumn: ERROR: column "require_message" does not exist
LINE 1: ..._key, description, notify_type, auto_action_type, require_me...
^
- Neste ponto, não há como iniciar o contêiner, então fui ao app.yml e desabilitei todos os plugins, em seguida, executei o rebuild novamente
- O aplicativo finalmente foi reconstruído, então pude entrar no console do rails para adicionar a coluna acima manualmente.
./launcher enter app
rails db
ActiveRecord::Base.connection.execute("ALTER TABLE flags ADD COLUMN require_message BOOLEAN DEFAULT FALSE;")
exit
exit
- Assim que a coluna estava presente, voltei ao app.yml, habilitei todos os plugins e fiz um rebuild novamente
- O rebuild foi bem-sucedido… e estamos online!
Obrigado @pfaffman pela sua pronta resposta, mesmo no fim de semana. Vamos criar um novo droplet atualizado e migrar. Esta deveria ser uma atualização rápida no local pela interface web. Mas acho que o script não testa a compatibilidade do docker. Quando ele atualizou o discourse docker, ele lançou um erro de docker incompatível.
Isso foi totalmente culpa nossa por estarmos em uma versão tão antiga do Ubuntu 16. Uma das coisas boas e ruins de um sistema estável é que ele tende a perdurar.