#!/bin/bash # Script para desplegar SnatchGame a producción # Construye la imagen, la sube a DockerHub y actualiza la VM en Google Cloud set -e # Exit on any error # Obtener el directorio del script y navegar a la raíz del proyecto SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" cd "$PROJECT_ROOT" PROJECT_ID="lelouchdragneel" ZONE="us-central1-a" VM_NAME="snatchgame-vm" DOCKER_IMAGE="josedario87/snatchgame:latest" echo "🚀 Iniciando deployment de SnatchGame a producción..." # 1. Construir imagen fresca sin cache echo "📦 Construyendo imagen Docker fresca..." docker build --no-cache -f deploy/Dockerfile -t $DOCKER_IMAGE . # 2. Subir imagen a DockerHub echo "⬆️ Subiendo imagen a DockerHub..." docker push $DOCKER_IMAGE # 3. Configurar proyecto de gcloud echo "☁️ Configurando proyecto de Google Cloud..." gcloud config set project $PROJECT_ID # 4. Actualizar deployment en la VM echo "🔄 Actualizando deployment en la VM..." # Parar y eliminar contenedor actual gcloud compute ssh $VM_NAME \ --zone=$ZONE \ --tunnel-through-iap \ --command="sudo docker stop snatchgame 2>/dev/null || true && sudo docker rm snatchgame 2>/dev/null || true" # Eliminar imagen anterior para forzar descarga gcloud compute ssh $VM_NAME \ --zone=$ZONE \ --tunnel-through-iap \ --command="sudo docker rmi -f $DOCKER_IMAGE 2>/dev/null || true" # Descargar imagen fresca echo "⬇️ Descargando imagen fresca en la VM..." gcloud compute ssh $VM_NAME \ --zone=$ZONE \ --tunnel-through-iap \ --command="sudo docker pull $DOCKER_IMAGE" # Ejecutar nuevo contenedor echo "🏃 Iniciando nuevo contenedor..." gcloud compute ssh $VM_NAME \ --zone=$ZONE \ --tunnel-through-iap \ --command="sudo docker run -d --name snatchgame --restart unless-stopped -p 3000:3000 -p 2567:2567 $DOCKER_IMAGE" # 5. Verificar que el contenedor está corriendo echo "✅ Verificando deployment..." gcloud compute ssh $VM_NAME \ --zone=$ZONE \ --tunnel-through-iap \ --command="sudo docker ps | grep snatchgame" echo "" echo "🎉 ¡Deployment completado exitosamente!" echo "🌐 La aplicación debería estar disponible en: http://snatchgame.nucleoriofrio.com" echo "" echo "📊 Para monitorear los logs del contenedor:" echo " gcloud compute ssh $VM_NAME --zone=$ZONE --tunnel-through-iap --command='sudo docker logs -f snatchgame'"