#!/bin/bash # ─── deploy-to-prod.sh (ScoreOdonto) ────────────────────────────────────────── # Script de Promoção Manual: Staging (VPS 4) ➔ Produção (VPS 1) # ───────────────────────────────────────────────────────────────────────────── set -e LOCK_FILE="/tmp/deploy-prod-scoreodonto-release.lock" if [ -f "$LOCK_FILE" ]; then echo "🚨 Promoção para produção já está em andamento! Aguarde..." exit 1 fi touch "$LOCK_FILE" trap 'rm -f "$LOCK_FILE"' EXIT LOG_FILE="/home/deploy/stack/webhook-listener/deploy.log" log() { echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] [SCOREODONTO-PROD] $1" | tee -a "$LOG_FILE" } log "🚀 Iniciando PROMOÇÃO MANUAL de Staging (VPS 4) para PRODUÇÃO (VPS 1)..." # 1. Sincronizar Backend para a VPS 1 log "🚚 Despachando Backend para a VPS 1 (Produção)..." rsync -avz --delete \ --exclude '.env' \ --exclude 'node_modules/.cache' \ /home/deploy/stack/scoreodonto.com/backend/ \ deploy@10.99.0.1:/home/deploy/stack/scoreodonto.com/backend/ # 2. Sincronizar Frontend (build compilada em Staging) para a VPS 1 log "🚚 Despachando Frontend (build) para a VPS 1 (Produção)..." rsync -avz --delete \ /home/deploy/stack/scoreodonto.com/frontend/dist/ \ deploy@10.99.0.1:/home/deploy/stack/scoreodonto.com/frontend/dist/ # 3. Sincronizar Plugins para a VPS 1 log "🚚 Despachando Plugins..." rsync -avz --delete \ /home/deploy/stack/scoreodonto.com/plugins/ \ deploy@10.99.0.1:/home/deploy/stack/scoreodonto.com/plugins/ # 4. Sincronizar Docker Compose de Produção e Configurações de Nginx log "🚚 Despachando Infraestrutura (Docker/Config) para a VPS 1..." rsync -avz \ /home/deploy/stack/scoreodonto.com/docker-compose.yml \ /home/deploy/stack/scoreodonto.com/nginx \ deploy@10.99.0.1:/home/deploy/stack/scoreodonto.com/ # 5. SSH na VPS 1 para Reiniciar Serviços de Produção log "🔄 Reiniciando containers de PRODUÇÃO na VPS 1..." ssh -o BatchMode=yes deploy@10.99.0.1 "cd /home/deploy/stack/scoreodonto.com && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose up -d" log "✅ PROMOÇÃO PARA PRODUÇÃO CONCLUÍDA COM SUCESSO!"