# Deployment de SnatchGame

Esta carpeta contiene todos los archivos y documentación necesarios para desplegar SnatchGame en diferentes entornos.

## 📁 Estructura de archivos

```
deploy/
├── Dockerfile              # Imagen Docker de la aplicación completa
├── start.sh               # Script de inicio para el contenedor
├── 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
    └── update-deployment.sh # Script para actualizar deployment
```

## 🚀 Despliegue rápido

### Opción 1: Docker local
```bash
cd deploy
cp dockerignore .dockerignore
docker build -t snatchgame .
docker run -p 3000:3000 -p 2567:2567 snatchgame
```

### 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 4: Con Nginx Proxy Manager
Ver [NGINX-CONFIG.md](./NGINX-CONFIG.md) para configuración de proxy reverso.

## 🔧 Configuración de Docker

### Build de la imagen
```bash
# Desde la raíz del proyecto
docker build -f deploy/Dockerfile -t josedario87/snatchgame:latest .

# O desde la carpeta deploy
cd deploy
cp dockerignore .dockerignore
docker build -t josedario87/snatchgame:latest ..
```

### Push a DockerHub
```bash
docker login
docker push josedario87/snatchgame:latest
```

## 📊 Puertos utilizados

- **3000**: Frontend (Vue.js)
- **2567**: Backend (Colyseus WebSocket y API)

## 🌐 URLs del juego

- Frontend: `http://localhost:3000`
- API: `http://localhost:2567/api`
- WebSocket: `ws://localhost:2567/ws`
- Monitor: `http://localhost:2567/colyseus`

## 🔄 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`
4. En el servidor: `docker pull josedario87/snatchgame:latest && docker restart snatchgame`

## 📝 Notas importantes

- El archivo `dockerignore` debe renombrarse a `.dockerignore` cuando se use
- Los scripts de `gcloud/` requieren configuración específica del proyecto
- La imagen Docker incluye tanto frontend como backend en un solo contenedor
- Se recomienda usar variables de entorno para configuración sensible