feat: restaura o projeto original do clube67.com (Next.js + Express API + MySQL + Redis) livre de gambiarras e dockerizado
This commit is contained in:
+37
-48
@@ -1,55 +1,44 @@
|
||||
#!/bin/bash
|
||||
# ─── deploy-prod-builder.sh ──────────────────────────────────────────────────
|
||||
# Script sênior de automação de build e despacho (GitOps) de VPS 4 -> VPS 1.
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
set -e
|
||||
|
||||
LOCK_FILE="/tmp/deploy-prod-clube67.lock"
|
||||
if [ -f "$LOCK_FILE" ]; then
|
||||
echo "🚨 Deploy já está em andamento! Aguarde..."
|
||||
exit 1
|
||||
fi
|
||||
touch "$LOCK_FILE"
|
||||
# Configurações do Deploy
|
||||
PROD_VPS="10.99.0.1"
|
||||
PROD_USER="deploy"
|
||||
PROD_PATH="/home/deploy/stack/clube67"
|
||||
|
||||
# Garante que o lock file será apagado no final do script mesmo se houver erro
|
||||
trap 'rm -f "$LOCK_FILE"' EXIT
|
||||
echo "=========================================================="
|
||||
echo "🚀 INICIANDO DEPLOY DO CLUBE67 ORIGINAL (PRODUÇÃO)"
|
||||
echo "=========================================================="
|
||||
|
||||
LOG_FILE="/home/deploy/stack/webhook-listener/deploy.log"
|
||||
# 1. Sincronizar arquivos locais com a VPS 1 de produção
|
||||
echo "📦 Enviando arquivos para a VPS 1 (${PROD_VPS})..."
|
||||
rsync -avz --delete \
|
||||
--exclude='.git' \
|
||||
--exclude='node_modules' \
|
||||
--exclude='frontend/node_modules' \
|
||||
--exclude='backend/node_modules' \
|
||||
--exclude='frontend/.next' \
|
||||
--exclude='backend/dist' \
|
||||
--exclude='logs' \
|
||||
./ ${PROD_USER}@${PROD_VPS}:${PROD_PATH}/
|
||||
|
||||
log() {
|
||||
echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
log "🚀 Iniciando ciclo de build e deploy automático para Clube67..."
|
||||
|
||||
# 1. Atualizar repositório Git local na VPS 4
|
||||
log "📦 Sincronizando repositório Git local na VPS 4..."
|
||||
cd /home/deploy/stack/clube67
|
||||
git fetch origin main
|
||||
git reset --hard origin/main
|
||||
|
||||
# 2. Compilar o Backend
|
||||
log "⚙️ Instalando dependências e compilando o Backend..."
|
||||
cd /home/deploy/stack/clube67/backend
|
||||
npm install
|
||||
npm run build
|
||||
|
||||
# 3. Sincronizar arquivos compilados e arquivos de configuração com a VPS 1 (Produção) via Rsync VPN
|
||||
log "🚚 Despachando Backend compilado e dependências para a VPS 1 (Produção)..."
|
||||
rsync -avz --delete --exclude '.env' /home/deploy/stack/clube67/backend/dist/ deploy@10.99.0.1:/home/deploy/stack/clube67/backend/dist/
|
||||
rsync -avz --delete /home/deploy/stack/clube67/backend/node_modules/ deploy@10.99.0.1:/home/deploy/stack/clube67/backend/node_modules/
|
||||
rsync -avz /home/deploy/stack/clube67/backend/package.json /home/deploy/stack/clube67/backend/package-lock.json deploy@10.99.0.1:/home/deploy/stack/clube67/backend/
|
||||
|
||||
log "🚚 Despachando Frontend estático para a VPS 1 (Produção)..."
|
||||
rsync -avz --delete /home/deploy/stack/clube67/frontend/ deploy@10.99.0.1:/home/deploy/stack/clube67/frontend/
|
||||
|
||||
log "🚚 Despachando Nginx e Docker Compose de produção para a VPS 1..."
|
||||
rsync -avz /home/deploy/stack/clube67/nginx/default.conf deploy@10.99.0.1:/home/deploy/stack/clube67/nginx/default.conf
|
||||
rsync -avz /home/deploy/stack/clube67/docker-compose.yml deploy@10.99.0.1:/home/deploy/stack/clube67/docker-compose.yml
|
||||
|
||||
# 4. Parar containers antigos obsoletos e iniciar os novos na VPS 1
|
||||
log "🔄 Reiniciando containers e aplicando novas definições na VPS 1..."
|
||||
ssh -o BatchMode=yes deploy@10.99.0.1 "cd /home/deploy/stack/clube67 && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose down && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose up -d"
|
||||
|
||||
log "✅ Deploy do Clube67 concluído com absoluto sucesso!"
|
||||
# 2. Reiniciar e compilar contêineres em produção
|
||||
echo "🐳 Reiniciando contêineres Docker na VPS 1..."
|
||||
ssh -o BatchMode=yes ${PROD_USER}@${PROD_VPS} "
|
||||
cd ${PROD_PATH}
|
||||
# Garantir redes externas
|
||||
docker network inspect web >/dev/null 2>&1 || docker network create web
|
||||
docker network inspect soc >/dev/null 2>&1 || docker network create soc
|
||||
|
||||
echo '🐳 Derrubando contêineres antigos...'
|
||||
DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose down || true
|
||||
|
||||
echo '🐳 Subindo e compilando novos contêineres...'
|
||||
DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose up -d --build
|
||||
|
||||
echo '✅ Contêineres de produção iniciados com sucesso!'
|
||||
"
|
||||
|
||||
echo "=========================================================="
|
||||
echo "🎉 DEPLOY CONCLUÍDO COM SUCESSO!"
|
||||
echo "=========================================================="
|
||||
|
||||
Reference in New Issue
Block a user