deploy script creado
This commit is contained in:
@@ -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`
|
||||
|
||||
73
deploy/deploy-to-production.sh
Executable file
73
deploy/deploy-to-production.sh
Executable file
@@ -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'"
|
||||
Reference in New Issue
Block a user