- Prefijo v2: MCH - TRACEABILITY-MASTER.yml creado - Listo para integracion como submodulo Workspace: v2.0.0 | SIMCO: v4.0.0
166 lines
5.3 KiB
Bash
Executable File
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 ""
|