#!/bin/bash # Script para construir y publicar imágenes de Syntria a Docker Hub set -e # Colores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}🚀 Syntria - Build & Push to Docker Hub${NC}" echo "==========================================" # Verificar que estamos en el directorio correcto if [ ! -f "docker-compose.yml" ]; then echo -e "${RED}❌ Error: Ejecuta este script desde el directorio raíz del proyecto${NC}" exit 1 fi # Leer variables de entorno if [ -f ".env.production" ]; then export $(cat .env.production | grep -v '^#' | xargs) fi # Verificar Docker Hub username if [ -z "$DOCKER_USERNAME" ]; then echo -e "${YELLOW}⚠️ DOCKER_USERNAME no está configurado en .env.production${NC}" read -p "Ingresa tu username de Docker Hub: " DOCKER_USERNAME fi # Verificar versión read -p "Versión a construir (default: latest): " VERSION VERSION=${VERSION:-latest} echo "" echo -e "${GREEN}Configuración:${NC}" echo " Docker Hub User: $DOCKER_USERNAME" echo " Versión: $VERSION" echo "" # Confirmar read -p "¿Continuar? (y/n) " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo -e "${YELLOW}Cancelado${NC}" exit 1 fi # Login a Docker Hub echo "" echo -e "${GREEN}📦 Iniciando sesión en Docker Hub...${NC}" docker login # Build Backend echo "" echo -e "${GREEN}🔨 Construyendo Backend...${NC}" docker build -t $DOCKER_USERNAME/syntria-backend:$VERSION -f backend/Dockerfile.prod backend/ docker tag $DOCKER_USERNAME/syntria-backend:$VERSION $DOCKER_USERNAME/syntria-backend:latest # Build Frontend echo "" echo -e "${GREEN}🔨 Construyendo Frontend...${NC}" docker build -t $DOCKER_USERNAME/syntria-frontend:$VERSION -f frontend/Dockerfile.prod frontend/ docker tag $DOCKER_USERNAME/syntria-frontend:$VERSION $DOCKER_USERNAME/syntria-frontend:latest # Push images echo "" echo -e "${GREEN}⬆️ Subiendo imágenes a Docker Hub...${NC}" docker push $DOCKER_USERNAME/syntria-backend:$VERSION docker push $DOCKER_USERNAME/syntria-backend:latest docker push $DOCKER_USERNAME/syntria-frontend:$VERSION docker push $DOCKER_USERNAME/syntria-frontend:latest echo "" echo -e "${GREEN}✅ ¡Imágenes publicadas exitosamente!${NC}" echo "" echo "Imágenes disponibles:" echo " 🐳 $DOCKER_USERNAME/syntria-backend:$VERSION" echo " 🐳 $DOCKER_USERNAME/syntria-backend:latest" echo " 🐳 $DOCKER_USERNAME/syntria-frontend:$VERSION" echo " 🐳 $DOCKER_USERNAME/syntria-frontend:latest" echo "" echo -e "${YELLOW}Próximos pasos:${NC}" echo "1. Actualiza DOCKER_USERNAME en .env.production" echo "2. En tu servidor de producción, ejecuta:" echo " docker-compose -f docker-compose.prod.yml --env-file .env.production up -d"