feat(deploy): poda imagens antigas ao fim do deploy (atual + 1 anterior)
Após subir a nova versão, apaga as imagens vX.Y.Z locais além das 2 mais recentes de cada repo (backend/frontend) — a recém-deployada e a anterior, que fica de reserva para rollback de urgência. Automatiza a política que antes era manual, evitando o acúmulo que chegou a dezenas de GB. Salvaguardas: só toca em tags no formato vX.Y.Z; nunca remove imagem em uso por container; best-effort no fim (|| true) — a poda jamais aborta o deploy nem o rollback. Testado com uma tag falsa: remove só a antiga, preserva as 2 atuais. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,28 @@ curl -s --max-time 10 https://scoreodonto.com/api/version || echo "(ainda subind
|
||||
echo
|
||||
docker logs scoreodontocom-scoreodonto-backend-1 --tail 5 2>&1 | grep -iE 'VERSION|MIGRATION' || true
|
||||
|
||||
echo "[poda] removendo imagens antigas (mantém as 2 versões mais recentes) ..."
|
||||
# Política "atual + 1 anterior": após deployar, apaga as imagens vX.Y.Z locais
|
||||
# além das 2 mais recentes de cada repo — a atual (recém-subida) e a anterior
|
||||
# (rollback). Best-effort: roda com tudo já no ar e NUNCA aborta o deploy.
|
||||
prune_old_images() {
|
||||
local keep=2 repo tag olds inuse
|
||||
inuse=$(docker ps --format '{{.Image}}' 2>/dev/null | sort -u)
|
||||
for repo in "$@"; do
|
||||
olds=$(docker images --format '{{.Tag}}' "$repo" 2>/dev/null \
|
||||
| grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | head -n -"$keep") || true
|
||||
[ -z "$olds" ] && continue
|
||||
while IFS= read -r tag; do
|
||||
[ -z "$tag" ] && continue
|
||||
printf '%s\n' "$inuse" | grep -qxF "$repo:$tag" && continue # nunca em uso
|
||||
docker rmi "$repo:$tag" >/dev/null 2>&1 && echo " removida: $repo:$tag"
|
||||
done <<< "$olds"
|
||||
done
|
||||
}
|
||||
prune_old_images \
|
||||
10.99.0.3:3000/ruicesar/scoreodonto-backend \
|
||||
10.99.0.3:3000/ruicesar/scoreodonto-frontend || true
|
||||
|
||||
echo
|
||||
echo "✅ Deploy concluído (tag $TAG)."
|
||||
echo " Rollback: ./deploy-prod.sh <tag-anterior>"
|
||||
|
||||
Reference in New Issue
Block a user