Rollback
Rollback via Docker Swarm
O Docker Swarm mantém o historico de versoes do service. Para voltar a versao anterior:
docker service rollback <service_name>
Exemplos:
docker service rollback marie_ai_backend
docker service rollback marie_ai_frontend
docker service rollback webhook_whatsapp
Note
O rollback volta para a imagem anterior do service. So funciona se houve um docker service update previo.
Rollback para SHA Especifico
Se precisa voltar para uma versao especifica (pelo SHA do commit):
# 1. Pegar o SHA do commit desejado no GitHub
# 2. Pull e update
docker pull ghcr.io/the-cmos/marie_ai:<sha>
docker service update \
--image ghcr.io/the-cmos/marie_ai:<sha> \
--with-registry-auth \
marie_ai_backend
Rollback via Git
Se o problema esta no codigo e precisa reverter o commit:
# Reverter o ultimo commit
git revert HEAD --no-edit
git push origin main
Isso cria um novo commit que desfaz as mudancas e dispara o CI/CD automaticamente.
Rollback de Stack (RabbitMQ, WhatsApp)
Para stacks manuais, nao ha rollback automatico. Edite o docker-compose.yml com a versao anterior e redeploy:
nano ~/stacks/whatsapp/docker-compose.yml
# Alterar a tag da imagem para a versao desejada
docker stack deploy -c ~/stacks/whatsapp/docker-compose.yml whatsapp
Verificar Versao Atual
# Ver qual imagem cada service esta usando
docker service inspect <service_name> --format '{{.Spec.TaskTemplate.ContainerSpec.Image}}'
Procedimento de Emergencia
Se um service esta crashando e precisa parar imediatamente:
# Escalar para 0 replicas (para o service sem remover)
docker service scale <service_name>=0
# Investigar logs
docker service logs <service_name> --tail 100
# Quando corrigido, escalar de volta
docker service scale <service_name>=1
Nunca remova o service
Prefira docker service scale X=0 em vez de docker service rm. Remover o service perde a configuracao (network, env-file, ports).