128 lines
2.9 KiB
Bash
Executable File
128 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 🚀 Script de Deploy Local - Liberi Kids
|
|
# Execute: chmod +x scripts/deploy-local.sh && ./scripts/deploy-local.sh
|
|
|
|
echo "🚀 Iniciando deploy local do Liberi Kids..."
|
|
|
|
# Cores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Função para log colorido
|
|
log() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
warn() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Verificar se Node.js está instalado
|
|
if ! command -v node &> /dev/null; then
|
|
error "Node.js não encontrado. Instale Node.js 18+ primeiro."
|
|
exit 1
|
|
fi
|
|
|
|
# Verificar versão do Node.js
|
|
NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
|
|
if [ "$NODE_VERSION" -lt 18 ]; then
|
|
error "Node.js versão 18+ é necessária. Versão atual: $(node -v)"
|
|
exit 1
|
|
fi
|
|
|
|
log "Node.js $(node -v) encontrado ✓"
|
|
|
|
# Instalar dependências do servidor
|
|
log "Instalando dependências do servidor..."
|
|
npm install
|
|
if [ $? -ne 0 ]; then
|
|
error "Falha ao instalar dependências do servidor"
|
|
exit 1
|
|
fi
|
|
|
|
# Entrar na pasta do cliente
|
|
cd client
|
|
|
|
# Instalar dependências do cliente
|
|
log "Instalando dependências do frontend..."
|
|
npm install
|
|
if [ $? -ne 0 ]; then
|
|
error "Falha ao instalar dependências do frontend"
|
|
exit 1
|
|
fi
|
|
|
|
# Fazer build do frontend
|
|
log "Fazendo build do frontend..."
|
|
npm run build
|
|
if [ $? -ne 0 ]; then
|
|
error "Falha no build do frontend"
|
|
exit 1
|
|
fi
|
|
|
|
# Voltar para pasta raiz
|
|
cd ..
|
|
|
|
# Verificar se arquivo .env existe
|
|
if [ ! -f ".env" ]; then
|
|
warn "Arquivo .env não encontrado. Criando exemplo..."
|
|
cat > .env << EOF
|
|
# Configurações do Supabase
|
|
SUPABASE_URL=https://seu-projeto.supabase.co
|
|
SUPABASE_ANON_KEY=sua_chave_anonima_aqui
|
|
|
|
# Configurações do servidor
|
|
NODE_ENV=production
|
|
PORT=5000
|
|
EOF
|
|
warn "Configure o arquivo .env com suas credenciais do Supabase!"
|
|
echo "Edite o arquivo .env antes de continuar."
|
|
exit 1
|
|
fi
|
|
|
|
# Verificar se PM2 está instalado
|
|
if ! command -v pm2 &> /dev/null; then
|
|
log "PM2 não encontrado. Instalando PM2..."
|
|
npm install -g pm2
|
|
fi
|
|
|
|
# Parar processo anterior se existir
|
|
pm2 delete liberi-kids 2>/dev/null || true
|
|
|
|
# Iniciar aplicação com PM2
|
|
log "Iniciando aplicação com PM2..."
|
|
pm2 start server-supabase.js --name "liberi-kids" --env production
|
|
|
|
# Configurar PM2 para iniciar automaticamente
|
|
log "Configurando PM2 para inicialização automática..."
|
|
pm2 startup
|
|
pm2 save
|
|
|
|
# Status final
|
|
log "Deploy concluído com sucesso! 🎉"
|
|
echo ""
|
|
echo -e "${BLUE}📊 Status da aplicação:${NC}"
|
|
pm2 status
|
|
|
|
echo ""
|
|
echo -e "${BLUE}🌐 Acesso:${NC}"
|
|
echo " Local: http://localhost:5000"
|
|
echo " Rede: http://$(hostname -I | awk '{print $1}'):5000"
|
|
|
|
echo ""
|
|
echo -e "${BLUE}📋 Comandos úteis:${NC}"
|
|
echo " Ver logs: pm2 logs liberi-kids"
|
|
echo " Reiniciar: pm2 restart liberi-kids"
|
|
echo " Parar: pm2 stop liberi-kids"
|
|
echo " Status: pm2 status"
|
|
|
|
echo ""
|
|
log "Aplicação rodando em produção! ✓"
|