73 lines
2.4 KiB
Bash
Executable File
73 lines
2.4 KiB
Bash
Executable File
#!/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'" |