#!/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 ""