A recomendação é usar um temporizador do systemd no host, fixar imagens por digest e manter uma imagem local para rollback, sem criar um contêiner atualizador. A atualização deve recriar apenas o serviço do gateway.
Publicado porImagens geradas com GPT Image 2
Resposta de pesquisa
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
Para atualizar o gateway Docker com menos risco, a proposta é combinar um agendador nativo do host, implantação de imagens fixadas por digest, estado transacional persistente e uma cópia local da versão anterior para rollback. Não seria necessário introduzir um contêiner dedicado a atualizar outros contêineres.
Há dois limites importantes. Consultar um registro de imagens pela internet não permite garantir que cada verificação termine em menos de um segundo. E, como a implantação atual tem um único gateway, recriá-lo não garante zero interrupção nem preserva necessariamente todas as solicitações em andamento.
Este é um plano técnico, não uma alteração concluída: nenhum arquivo foi escrito, nenhum teste foi executado e nenhuma das duas VPS remotas foi operada. A meta é fazer rollback automático quando uma atualização falha em um host e no Docker que continuam funcionando. Se o host desligar, o Docker ficar indisponível ou a própria imagem anterior não iniciar, o sistema deve sinalizar a falha — não prometer recuperação garantida.
O fluxo de publicação aceita tags no formato de versão principal e secundária, como v3.12, e publica latest, 3.12, v3.12 e uma tag com parte do SHA do commit. Não há indicação de que ele mantenha automaticamente uma tag de série chamada v3.x. O fluxo também define quatro arquiteturas, mas isso, por si só, não comprova que uma publicação específica tenha sido concluída com sucesso.
A implantação atual constrói o gateway a partir do código, publica a porta 8080 no host e mantém uma montagem somente de leitura para configuração. O serviço de e-mail usa armazenamento em memória; por isso, evitar que ele seja reiniciado é uma proteção importante. A imagem publicada usa o ponto de entrada da raiz do projeto e depende de uma configuração local do registro de modelos que não é copiada para dentro da imagem. Portanto, entregar a imagem sem o arquivo de configuração não basta.
Há ainda limites para os testes de saúde existentes: o manipulador do catálogo de modelos lê uma cópia do registro, mas não faz uma chamada real de chat; o endpoint de saúde informa apenas que o processo está vivo. Nenhum dos dois confirma que uma conta de provedor foi aquecida ou que uma conversa real funcionará. A aplicação cancela seu contexto ao receber um sinal de encerramento e dá ao servidor HTTP uma janela de fechamento de cinco segundos. Aumentar o prazo de parada do contêiner, sozinho, não garante que solicitações longas ou transmissões em fluxo sejam concluídas.
A proposta, portanto, não altera o serviço de e-mail, não sincroniza o estado de contas em execução, não atualiza dependências, não busca código-fonte remoto e não muda o fluxo de desenvolvimento local. Também não promete troca simultânea entre os hosts nem atualização sem interrupção. Isso exigiria outra arquitetura, com instâncias duplicadas, troca de entrada e drenagem de conexões.
O script previsto, scripts/auto-update.sh, ainda não foi criado. Ele rodaria no host e dependeria de Bash, Docker Engine, o plug-in Compose, curl, jq, flock e Skopeo para consultar manifestos de imagem sem baixar as camadas. As versões e a disponibilidade dessas ferramentas nas VPS precisariam ser verificadas durante a implementação.
O processo usaria uma conta protegida do host, com acesso ao Docker. Não montaria o socket do Docker nem credenciais do registro dentro de contêineres. Isso reduz a exposição desses itens a partir dos contêineres, mas não elimina o risco associado à conta do host: quem tem acesso administrativo ao Docker continua tendo privilégios relevantes na máquina.
A imagem efetivamente implantada seria referenciada por digest, e não apenas por uma tag mutável. O formato de imagem do Compose admite referências por digest 1. O sistema manteria separados o digest do índice multi-arquitetura, o digest do manifesto específico da plataforma e o ID local da imagem; esses valores não devem ser comparados como se fossem equivalentes.
Antes de trocar a versão, o atualizador identificaria a imagem em execução, criaria uma referência local protegida para ela e confirmaria que o serviço antigo está saudável. Assim, o rollback não dependeria de conseguir acessar o registro novamente. O estado da operação — versões antiga e nova, IDs das imagens e dos contêineres, configuração e etapa em andamento — seria escrito em formato de dados estritamente validado, sem executar seu conteúdo. A gravação usaria arquivo temporário e substituição atômica, além de sincronização dos dados e do diretório: uma simples renomeação não basta para garantir persistência após uma queda de energia.
A sequência proposta seria:
Uma chamada representativa do Compose poderia ser:
APP_IMAGE="$NEW_REF" timeout --kill-after=5s 60s \\
docker compose --project-name "$PROJECT" \\
--project-directory "$DEPLOY_DIR" -f "$COMPOSE_FILE" \\
up -d --no-deps --no-build --pull never app
A mesma forma seria usada no rollback, substituindo NEW_REF pela referência local já preservada. As opções impedem a construção da imagem, evitam iniciar dependências e desativam um novo pull durante a recriação; o comando deve nomear somente o serviço do gateway. O Compose oferece essas opções no comando up 2. Uma operação do Docker que ultrapasse o tempo limite pode continuar no daemon: antes de iniciar outra troca, o atualizador precisa verificar o estado real dos contêineres e coordenar a recuperação.
Como valores iniciais sujeitos a teste, a proposta sugere uma janela total de 60 segundos, conexão com limite de um segundo, solicitação de até três segundos, intervalo de dois segundos e três respostas bem-sucedidas consecutivas antes de aprovar a versão. Esses números são parâmetros candidatos, não resultados medidos.
A verificação consultaria o catálogo de modelos local e exigiria HTTP 200 sem seguir redirecionamentos. Também validaria a estrutura JSON, para não aceitar uma página de login ou um erro de proxy como resposta válida. O script confirmaria que o contêiner responde com a imagem candidata e que o contador de reinicializações não continua aumentando. A exigência de que o catálogo tenha modelos deve seguir o contrato atual do registro, e não um número histórico fixado no script.
Uma conversa real poderia testar disponibilidade funcional, mas também consumir recursos ou cota. Por isso, não seria disparada automaticamente. A saúde operacional do processo e a disponibilidade real de uma conversa são critérios diferentes.
A mudança de configuração seria feita apenas na cópia usada nas VPS, preservando portas, limites de memória, logs, variáveis de ambiente, montagem somente de leitura e definição do serviço de e-mail. O arquivo local usado para desenvolvimento não deve ser sobrescrito.
O trecho previsto para o serviço do gateway seria semelhante a este:
services:
app:
image: "${APP_IMAGE:?é obrigatório informar uma referência de imagem fixa}"
pull_policy: never
É apenas um trecho de substituição, não um arquivo Compose completo. A cópia remota deve manter a definição original dos serviços e retirar o campo de construção do gateway. O nome do projeto Compose também precisa ser identificado e preservado: presumir que o nome local e os nomes nas duas VPS sejam iguais pode alterar redes ou relações entre serviços.
A configuração remota deve conservar as variáveis de ambiente que o serviço realmente usa. Uma variável de interpolação do Compose não é automaticamente uma variável disponível dentro do contêiner. Também é preciso conferir as duas opções experimentais explicitamente habilitadas na configuração atual, sem presumir que o estado local seja igual ao das VPS. Se uma nova versão exigir uma migração incompatível, a atualização automática deve esperar até existir um caminho de migração reversível.
Para baixar uma imagem privada do GitHub Container Registry (GHCR), a proposta usa um token de acesso pessoal clássico com permissão de leitura de pacotes, pertencente a uma conta que realmente tenha acesso ao pacote. Se a organização exigir, também será necessário autorizar o token por meio do SSO correspondente. A documentação do GitHub descreve o uso de tokens clássicos para autenticação no registro 9.
Cada VPS deveria ter uma credencial de leitura própria e revogável. O login seria feito por entrada padrão, sem expor o token nos argumentos do processo ou nos logs. A configuração de autenticação ficaria em um diretório dedicado, legível apenas por administradores, e seria usada tanto pelo Docker quanto pela ferramenta que consulta os manifestos. A credencial não seria passada ao gateway nem ao serviço de e-mail. Se a autenticação falhar, a atualização para, mas a versão que já está no ar permanece.
A opção preferida é um serviço oneshot e um timer do systemd no host. O exemplo de instalação prevê execução após a inicialização, com verificações periódicas depois de cada execução e um atraso aleatório curto. São unidades propostas, não arquivos instalados ou ativados. Antes de habilitá-las, seria preciso instalar e validar as dependências, configurar o serviço e ensaiar o fluxo de recuperação.
O bloqueio compartilhado protegeria atualização, recuperação, inicialização e limpeza contra concorrência. As duas VPS seriam escalonadas em horários diferentes: a sincronização entre elas seria eventual, não uma troca atômica. Se uma delas fizer rollback, ela pode permanecer temporariamente na versão anterior; forçar a instalação de uma imagem que já falhou não é uma forma segura de manter versões iguais.
O registro de auditoria incluiria horário UTC, identificação do host, ID da transação, digests antigo e novo, etapa, duração, resultado das verificações e resultado do rollback. Não deveria incluir credenciais, variáveis de ambiente completas, contas de e-mail ou conteúdo de respostas. Uma política candidata de rotação seria semanal, com rotação antecipada acima de 1 MB e retenção comprimida de 26 arquivos; ela ainda precisaria ser confirmada e não alteraria a política global de logs do host.
A limpeza seria limitada às imagens históricas registradas como propriedade do atualizador. A versão atual, a última versão aprovada e qualquer imagem ligada a uma transação incompleta seriam preservadas. Antes de remover uma referência, o processo também verificaria se a imagem está sendo usada por contêineres existentes ou por outras tags. Imagens históricas próprias com mais de 14 dias poderiam ter sua tag de retenção removida e ser excluídas sem forçar a operação; se a exclusão falhar, seriam mantidas e registradas. Imagens sem tag não devem ser consideradas descartáveis por padrão, pois podem ser material de rollback manual.
Se faltar espaço antes do download, a atualização deve ser abandonada. Não se deve liberar espaço apagando a única imagem que permite voltar à versão anterior. Reduzir a prioridade do atualizador também não garante limitar os picos de CPU do daemon Docker ao extrair camadas; isso precisa ser medido no equipamento de destino.
A implementação deveria começar pela conferência das duas VPS: arquitetura, versões das ferramentas, nome do projeto Compose, montagens, permissões das credenciais e imagem atualmente saudável. Em seguida, seria estabelecida uma referência inicial de rollback. O atualizador seria desenvolvido e exercitado em ambiente isolado autorizado antes de qualquer uso em produção. Só depois viriam o timer, a rotação de logs e a limpeza limitada. Por fim, as VPS seriam atualizadas uma de cada vez: a segunda só entraria no processo depois de a primeira passar por uma atualização e um rollback reais.
O aceite precisaria demonstrar que:
A conclusão é condicional: o plano é recomendável se a operação aceitar uma breve janela de troca do gateway, tratar o tempo de verificação como uma meta a medir e confirmar primeiro a configuração real das VPS. Compatibilidade, desempenho subsegundo e rollback completo ainda não foram verificados. Por enquanto, há apenas uma proposta de implementação — nenhum arquivo, ADR ou plano existente foi alterado.
Studio Global AI
Esta página inclui uma resposta baseada na fonte que você pode continuar em Studio Global.
A recomendação é usar um temporizador do systemd no host, fixar imagens por digest e manter uma imagem local para rollback, sem criar um contêiner atualizador.
A recomendação é usar um temporizador do systemd no host, fixar imagens por digest e manter uma imagem local para rollback, sem criar um contêiner atualizador. A atualização deve recriar apenas o serviço do gateway. O serviço de e mail, que usa armazenamento em memória, não deve ser reiniciado nesse processo.
A proposta ainda não foi implementada nem testada nas duas VPS. Também não promete atualização em menos de um segundo, ausência de interrupção ou preservação de todas as conexões em andamento.
A recomendação é usar um temporizador do systemd no host, fixar imagens por digest e manter uma imagem local para rollback, sem criar um contêiner atualizador. A atualização deve recriar apenas o serviço do gateway.
Publicado porImagens geradas com GPT Image 2
Resposta de pesquisa
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
Para atualizar o gateway Docker com menos risco, a proposta é combinar um agendador nativo do host, implantação de imagens fixadas por digest, estado transacional persistente e uma cópia local da versão anterior para rollback. Não seria necessário introduzir um contêiner dedicado a atualizar outros contêineres.
Há dois limites importantes. Consultar um registro de imagens pela internet não permite garantir que cada verificação termine em menos de um segundo. E, como a implantação atual tem um único gateway, recriá-lo não garante zero interrupção nem preserva necessariamente todas as solicitações em andamento.
Este é um plano técnico, não uma alteração concluída: nenhum arquivo foi escrito, nenhum teste foi executado e nenhuma das duas VPS remotas foi operada. A meta é fazer rollback automático quando uma atualização falha em um host e no Docker que continuam funcionando. Se o host desligar, o Docker ficar indisponível ou a própria imagem anterior não iniciar, o sistema deve sinalizar a falha — não prometer recuperação garantida.
O fluxo de publicação aceita tags no formato de versão principal e secundária, como v3.12, e publica latest, 3.12, v3.12 e uma tag com parte do SHA do commit. Não há indicação de que ele mantenha automaticamente uma tag de série chamada v3.x. O fluxo também define quatro arquiteturas, mas isso, por si só, não comprova que uma publicação específica tenha sido concluída com sucesso.
A implantação atual constrói o gateway a partir do código, publica a porta 8080 no host e mantém uma montagem somente de leitura para configuração. O serviço de e-mail usa armazenamento em memória; por isso, evitar que ele seja reiniciado é uma proteção importante. A imagem publicada usa o ponto de entrada da raiz do projeto e depende de uma configuração local do registro de modelos que não é copiada para dentro da imagem. Portanto, entregar a imagem sem o arquivo de configuração não basta.
Há ainda limites para os testes de saúde existentes: o manipulador do catálogo de modelos lê uma cópia do registro, mas não faz uma chamada real de chat; o endpoint de saúde informa apenas que o processo está vivo. Nenhum dos dois confirma que uma conta de provedor foi aquecida ou que uma conversa real funcionará. A aplicação cancela seu contexto ao receber um sinal de encerramento e dá ao servidor HTTP uma janela de fechamento de cinco segundos. Aumentar o prazo de parada do contêiner, sozinho, não garante que solicitações longas ou transmissões em fluxo sejam concluídas.
A proposta, portanto, não altera o serviço de e-mail, não sincroniza o estado de contas em execução, não atualiza dependências, não busca código-fonte remoto e não muda o fluxo de desenvolvimento local. Também não promete troca simultânea entre os hosts nem atualização sem interrupção. Isso exigiria outra arquitetura, com instâncias duplicadas, troca de entrada e drenagem de conexões.
O script previsto, scripts/auto-update.sh, ainda não foi criado. Ele rodaria no host e dependeria de Bash, Docker Engine, o plug-in Compose, curl, jq, flock e Skopeo para consultar manifestos de imagem sem baixar as camadas. As versões e a disponibilidade dessas ferramentas nas VPS precisariam ser verificadas durante a implementação.
O processo usaria uma conta protegida do host, com acesso ao Docker. Não montaria o socket do Docker nem credenciais do registro dentro de contêineres. Isso reduz a exposição desses itens a partir dos contêineres, mas não elimina o risco associado à conta do host: quem tem acesso administrativo ao Docker continua tendo privilégios relevantes na máquina.
A imagem efetivamente implantada seria referenciada por digest, e não apenas por uma tag mutável. O formato de imagem do Compose admite referências por digest 1. O sistema manteria separados o digest do índice multi-arquitetura, o digest do manifesto específico da plataforma e o ID local da imagem; esses valores não devem ser comparados como se fossem equivalentes.
Antes de trocar a versão, o atualizador identificaria a imagem em execução, criaria uma referência local protegida para ela e confirmaria que o serviço antigo está saudável. Assim, o rollback não dependeria de conseguir acessar o registro novamente. O estado da operação — versões antiga e nova, IDs das imagens e dos contêineres, configuração e etapa em andamento — seria escrito em formato de dados estritamente validado, sem executar seu conteúdo. A gravação usaria arquivo temporário e substituição atômica, além de sincronização dos dados e do diretório: uma simples renomeação não basta para garantir persistência após uma queda de energia.
A sequência proposta seria:
Uma chamada representativa do Compose poderia ser:
APP_IMAGE="$NEW_REF" timeout --kill-after=5s 60s \\
docker compose --project-name "$PROJECT" \\
--project-directory "$DEPLOY_DIR" -f "$COMPOSE_FILE" \\
up -d --no-deps --no-build --pull never app
A mesma forma seria usada no rollback, substituindo NEW_REF pela referência local já preservada. As opções impedem a construção da imagem, evitam iniciar dependências e desativam um novo pull durante a recriação; o comando deve nomear somente o serviço do gateway. O Compose oferece essas opções no comando up 2. Uma operação do Docker que ultrapasse o tempo limite pode continuar no daemon: antes de iniciar outra troca, o atualizador precisa verificar o estado real dos contêineres e coordenar a recuperação.
Como valores iniciais sujeitos a teste, a proposta sugere uma janela total de 60 segundos, conexão com limite de um segundo, solicitação de até três segundos, intervalo de dois segundos e três respostas bem-sucedidas consecutivas antes de aprovar a versão. Esses números são parâmetros candidatos, não resultados medidos.
A verificação consultaria o catálogo de modelos local e exigiria HTTP 200 sem seguir redirecionamentos. Também validaria a estrutura JSON, para não aceitar uma página de login ou um erro de proxy como resposta válida. O script confirmaria que o contêiner responde com a imagem candidata e que o contador de reinicializações não continua aumentando. A exigência de que o catálogo tenha modelos deve seguir o contrato atual do registro, e não um número histórico fixado no script.
Uma conversa real poderia testar disponibilidade funcional, mas também consumir recursos ou cota. Por isso, não seria disparada automaticamente. A saúde operacional do processo e a disponibilidade real de uma conversa são critérios diferentes.
A mudança de configuração seria feita apenas na cópia usada nas VPS, preservando portas, limites de memória, logs, variáveis de ambiente, montagem somente de leitura e definição do serviço de e-mail. O arquivo local usado para desenvolvimento não deve ser sobrescrito.
O trecho previsto para o serviço do gateway seria semelhante a este:
services:
app:
image: "${APP_IMAGE:?é obrigatório informar uma referência de imagem fixa}"
pull_policy: never
É apenas um trecho de substituição, não um arquivo Compose completo. A cópia remota deve manter a definição original dos serviços e retirar o campo de construção do gateway. O nome do projeto Compose também precisa ser identificado e preservado: presumir que o nome local e os nomes nas duas VPS sejam iguais pode alterar redes ou relações entre serviços.
A configuração remota deve conservar as variáveis de ambiente que o serviço realmente usa. Uma variável de interpolação do Compose não é automaticamente uma variável disponível dentro do contêiner. Também é preciso conferir as duas opções experimentais explicitamente habilitadas na configuração atual, sem presumir que o estado local seja igual ao das VPS. Se uma nova versão exigir uma migração incompatível, a atualização automática deve esperar até existir um caminho de migração reversível.
Para baixar uma imagem privada do GitHub Container Registry (GHCR), a proposta usa um token de acesso pessoal clássico com permissão de leitura de pacotes, pertencente a uma conta que realmente tenha acesso ao pacote. Se a organização exigir, também será necessário autorizar o token por meio do SSO correspondente. A documentação do GitHub descreve o uso de tokens clássicos para autenticação no registro 9.
Cada VPS deveria ter uma credencial de leitura própria e revogável. O login seria feito por entrada padrão, sem expor o token nos argumentos do processo ou nos logs. A configuração de autenticação ficaria em um diretório dedicado, legível apenas por administradores, e seria usada tanto pelo Docker quanto pela ferramenta que consulta os manifestos. A credencial não seria passada ao gateway nem ao serviço de e-mail. Se a autenticação falhar, a atualização para, mas a versão que já está no ar permanece.
A opção preferida é um serviço oneshot e um timer do systemd no host. O exemplo de instalação prevê execução após a inicialização, com verificações periódicas depois de cada execução e um atraso aleatório curto. São unidades propostas, não arquivos instalados ou ativados. Antes de habilitá-las, seria preciso instalar e validar as dependências, configurar o serviço e ensaiar o fluxo de recuperação.
O bloqueio compartilhado protegeria atualização, recuperação, inicialização e limpeza contra concorrência. As duas VPS seriam escalonadas em horários diferentes: a sincronização entre elas seria eventual, não uma troca atômica. Se uma delas fizer rollback, ela pode permanecer temporariamente na versão anterior; forçar a instalação de uma imagem que já falhou não é uma forma segura de manter versões iguais.
O registro de auditoria incluiria horário UTC, identificação do host, ID da transação, digests antigo e novo, etapa, duração, resultado das verificações e resultado do rollback. Não deveria incluir credenciais, variáveis de ambiente completas, contas de e-mail ou conteúdo de respostas. Uma política candidata de rotação seria semanal, com rotação antecipada acima de 1 MB e retenção comprimida de 26 arquivos; ela ainda precisaria ser confirmada e não alteraria a política global de logs do host.
A limpeza seria limitada às imagens históricas registradas como propriedade do atualizador. A versão atual, a última versão aprovada e qualquer imagem ligada a uma transação incompleta seriam preservadas. Antes de remover uma referência, o processo também verificaria se a imagem está sendo usada por contêineres existentes ou por outras tags. Imagens históricas próprias com mais de 14 dias poderiam ter sua tag de retenção removida e ser excluídas sem forçar a operação; se a exclusão falhar, seriam mantidas e registradas. Imagens sem tag não devem ser consideradas descartáveis por padrão, pois podem ser material de rollback manual.
Se faltar espaço antes do download, a atualização deve ser abandonada. Não se deve liberar espaço apagando a única imagem que permite voltar à versão anterior. Reduzir a prioridade do atualizador também não garante limitar os picos de CPU do daemon Docker ao extrair camadas; isso precisa ser medido no equipamento de destino.
A implementação deveria começar pela conferência das duas VPS: arquitetura, versões das ferramentas, nome do projeto Compose, montagens, permissões das credenciais e imagem atualmente saudável. Em seguida, seria estabelecida uma referência inicial de rollback. O atualizador seria desenvolvido e exercitado em ambiente isolado autorizado antes de qualquer uso em produção. Só depois viriam o timer, a rotação de logs e a limpeza limitada. Por fim, as VPS seriam atualizadas uma de cada vez: a segunda só entraria no processo depois de a primeira passar por uma atualização e um rollback reais.
O aceite precisaria demonstrar que:
A conclusão é condicional: o plano é recomendável se a operação aceitar uma breve janela de troca do gateway, tratar o tempo de verificação como uma meta a medir e confirmar primeiro a configuração real das VPS. Compatibilidade, desempenho subsegundo e rollback completo ainda não foram verificados. Por enquanto, há apenas uma proposta de implementação — nenhum arquivo, ADR ou plano existente foi alterado.
Studio Global AI
Esta página inclui uma resposta baseada na fonte que você pode continuar em Studio Global.
A recomendação é usar um temporizador do systemd no host, fixar imagens por digest e manter uma imagem local para rollback, sem criar um contêiner atualizador.
A recomendação é usar um temporizador do systemd no host, fixar imagens por digest e manter uma imagem local para rollback, sem criar um contêiner atualizador. A atualização deve recriar apenas o serviço do gateway. O serviço de e mail, que usa armazenamento em memória, não deve ser reiniciado nesse processo.
A proposta ainda não foi implementada nem testada nas duas VPS. Também não promete atualização em menos de um segundo, ausência de interrupção ou preservação de todas as conexões em andamento.