Files
checklist/build-and-push.sh
2025-11-19 01:09:25 -03:00

89 lines
2.7 KiB
Bash

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