michangarrito/deploy/scripts/deploy.sh
rckrdmrd 48dea7a5d0 feat: Initial commit - michangarrito
Marketplace móvil para negocios locales mexicanos.

Estructura inicial:
- apps/backend (NestJS API)
- apps/frontend (React Web)
- apps/mobile (Expo/React Native)
- apps/mcp-server (Claude MCP Server)
- apps/whatsapp-service (WhatsApp Business API)
- database/ (PostgreSQL DDL)
- docs/ (Documentación)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:41:02 -06:00

166 lines
5.3 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# MiChangarrito - Script de Despliegue
# =============================================================================
# USO:
# ./deploy.sh # Despliegue normal
# ./deploy.sh --build # Reconstruir imágenes
# ./deploy.sh --production # Modo producción (con nginx)
# ./deploy.sh --down # Detener servicios
# =============================================================================
set -e
# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
# Variables
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
BUILD=false
PRODUCTION=false
DOWN=false
# Parsear argumentos
for arg in "$@"; do
case $arg in
--build)
BUILD=true
shift
;;
--production)
PRODUCTION=true
shift
;;
--down)
DOWN=true
shift
;;
--help|-h)
echo "Uso: $0 [--build] [--production] [--down]"
echo " --build Reconstruir imágenes Docker"
echo " --production Incluir nginx reverse proxy"
echo " --down Detener todos los servicios"
exit 0
;;
esac
done
# Cambiar al directorio del proyecto
cd "$PROJECT_DIR"
# Banner
echo ""
echo -e "${BLUE}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ MICHANGARRITO - DESPLIEGUE DOCKER ║${NC}"
echo -e "${BLUE}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
# Verificar archivo .env
if [ ! -f ".env" ]; then
echo -e "${YELLOW}Archivo .env no encontrado. Creando desde template...${NC}"
cp .env.docker .env
echo -e "${YELLOW}⚠ IMPORTANTE: Edita el archivo .env con tus credenciales${NC}"
echo ""
fi
# Detener servicios si --down
if [ "$DOWN" = true ]; then
echo -e "${YELLOW}Deteniendo servicios...${NC}"
docker-compose down
echo -e "${GREEN}✓ Servicios detenidos${NC}"
exit 0
fi
# Construir imágenes si --build
if [ "$BUILD" = true ]; then
echo -e "${YELLOW}Construyendo imágenes Docker...${NC}"
docker-compose build --no-cache
echo ""
fi
# Iniciar servicios
echo -e "${YELLOW}Iniciando servicios...${NC}"
echo ""
if [ "$PRODUCTION" = true ]; then
echo -e "${CYAN}Modo: PRODUCCIÓN (con nginx)${NC}"
COMPOSE_PROFILES=production docker-compose up -d
else
echo -e "${CYAN}Modo: DESARROLLO${NC}"
docker-compose up -d
fi
echo ""
# Esperar a que los servicios estén listos
echo -e "${YELLOW}Esperando a que los servicios estén listos...${NC}"
sleep 10
# Verificar estado de servicios
echo ""
echo -e "${CYAN}Estado de servicios:${NC}"
docker-compose ps
# Verificar health checks
echo ""
echo -e "${CYAN}Health checks:${NC}"
# PostgreSQL
if docker-compose exec -T postgres pg_isready -U michangarrito_dev > /dev/null 2>&1; then
echo -e " [${GREEN}${NC}] PostgreSQL"
else
echo -e " [${RED}${NC}] PostgreSQL"
fi
# Redis
if docker-compose exec -T redis redis-cli ping > /dev/null 2>&1; then
echo -e " [${GREEN}${NC}] Redis"
else
echo -e " [${RED}${NC}] Redis"
fi
# Backend
if curl -s http://localhost:3141/api/v1/health > /dev/null 2>&1; then
echo -e " [${GREEN}${NC}] Backend API (http://localhost:3141)"
else
echo -e " [${YELLOW}~${NC}] Backend API (iniciando...)"
fi
# Frontend
if curl -s http://localhost:3140 > /dev/null 2>&1; then
echo -e " [${GREEN}${NC}] Frontend (http://localhost:3140)"
else
echo -e " [${YELLOW}~${NC}] Frontend (iniciando...)"
fi
# WhatsApp Service
if curl -s http://localhost:3143/health > /dev/null 2>&1; then
echo -e " [${GREEN}${NC}] WhatsApp Service (http://localhost:3143)"
else
echo -e " [${YELLOW}~${NC}] WhatsApp Service (iniciando...)"
fi
echo ""
echo -e "${GREEN}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ DESPLIEGUE COMPLETADO ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${CYAN}URLs:${NC}"
echo " Frontend: http://localhost:3140"
echo " Backend API: http://localhost:3141/api/v1"
echo " WhatsApp Webhook: http://localhost:3143"
echo " API Docs: http://localhost:3141/api/v1/docs"
echo ""
echo -e "${CYAN}Comandos útiles:${NC}"
echo " docker-compose logs -f backend # Ver logs del backend"
echo " docker-compose logs -f # Ver todos los logs"
echo " docker-compose down # Detener servicios"
echo " docker-compose restart backend # Reiniciar backend"
echo ""