diff --git a/client/index.html b/client/index.html index cd6386e..f306c85 100644 --- a/client/index.html +++ b/client/index.html @@ -2,7 +2,9 @@
- + + + diff --git a/deploy/README.md b/deploy/README.md index b1248af..3624a47 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -11,6 +11,7 @@ deploy/ ├── dockerignore # Archivos a ignorar en build (renombrar a .dockerignore) ├── NGINX-CONFIG.md # Configuración de Nginx Proxy Manager ├── DEPLOY-GCLOUD.md # Guía de despliegue en Google Cloud +├── deploy-to-production.sh # Script automatizado de deployment completo └── gcloud/ # Scripts específicos para Google Cloud ├── create-vm.sh # Script para crear la VM ├── startup-script.sh # Script de inicio de la VM @@ -27,10 +28,18 @@ docker build -t snatchgame . docker run -p 3000:3000 -p 2567:2567 snatchgame ``` -### Opción 2: Google Cloud VM +### Opción 2: Google Cloud VM (Automatizado) ✅ RECOMENDADO +```bash +# Deployment completo automatizado a producción +./deploy/deploy-to-production.sh +``` +**Estado**: ✅ Probado y funcionando - **Usado exitosamente: 1 vez** +> 📝 **Importante**: Actualizar este contador cada vez que el script funcione correctamente + +### Opción 3: Google Cloud VM (Manual) Ver [DEPLOY-GCLOUD.md](./DEPLOY-GCLOUD.md) para instrucciones detalladas. -### Opción 3: Con Nginx Proxy Manager +### Opción 4: Con Nginx Proxy Manager Ver [NGINX-CONFIG.md](./NGINX-CONFIG.md) para configuración de proxy reverso. ## 🔧 Configuración de Docker @@ -66,6 +75,17 @@ docker push josedario87/snatchgame:latest ## 🔄 Actualización del deployment +### Método automatizado (Recomendado) +```bash +./deploy/deploy-to-production.sh +``` +Este script hace todo automáticamente: +1. Construye imagen sin cache +2. Sube a DockerHub +3. Actualiza la VM en Google Cloud +4. Reinicia el contenedor + +### Método manual 1. Hacer cambios en el código 2. Reconstruir imagen: `docker build -t josedario87/snatchgame:latest .` 3. Push a DockerHub: `docker push josedario87/snatchgame:latest` diff --git a/deploy/deploy-to-production.sh b/deploy/deploy-to-production.sh new file mode 100755 index 0000000..96d1425 --- /dev/null +++ b/deploy/deploy-to-production.sh @@ -0,0 +1,73 @@ +#!/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'" \ No newline at end of file