# Docker Configuration for ZimaOS

## Archivos Incluidos

```
docker/
├── Dockerfile                    # Imagen base Ubuntu 22.04 (incluye todo el proyecto)
├── docker-compose.yml           # Desarrollo local
├── docker-compose.local.yml     # Pruebas locales con volumen
├── zimaos-docker-compose.yml    # Producción ZimaOS
├── zimaos.env.template          # Template de variables
├── entrypoint.sh                # Script de inicio (genera .env)
├── supervisord.conf             # Configuración Supervisor
├── supervisor/
│   ├── discordbot.conf          # Bot de Discord
│   └── translation-worker.conf  # Worker de traducciones
├── apache/
│   ├── ponsprueba.ddns.net.conf # Apache desarrollo
│   └── reod-dragon.ddns.net.conf # Apache producción
└── www/
    └── index.html               # Página de bienvenida
```

## Uso en ZimaOS

### 1. Preparar Archivos

Copia `zimaos-docker-compose.yml` a tu almacenamiento en ZimaOS.

### 2. Configurar Variables

Edita `zimaos-docker-compose.yml` y ajusta las variables de entorno:

```yaml
environment:
  - DB_HOST=tu_host_db
  - DB_PORT=tu_puerto
  - DB_NAME=tu_db
  - DB_USER=tu_usuario
  - DB_PASS=tu_password
  
  - DISCORD_BOT_TOKEN=tu_token
  - TELEGRAM_BOT_TOKEN=tu_token
  
  - APP_BASE_URL=http://tu-dominio:8086
  # ... otras variables
```

### 3. Ejecutar

```bash
# Descargar imagen
docker compose -f zimaos-docker-compose.yml pull

# Iniciar contenedor
docker compose -f zimaos-docker-compose.yml up -d

# Ver logs
docker logs -f bot_lastwar_funcionando
```

### 4. Detener

```bash
docker compose -f zimaos-docker-compose.yml down
```

## Actualizar a nueva versión

```bash
docker compose -f zimaos-docker-compose.yml pull
docker compose -f zimaos-docker-compose.yml up -d
```

## Variables de Entorno

| Variable | Descripción | Ejemplo |
|----------|-------------|---------|
| `APP_ENVIRONMENT` | Entorno (pruebas\|reod) | pruebas |
| `USE_LOCALHOST` | Usar URLs localhost | false |
| `DB_*` | Configuración base de datos | Ver template |
| `DISCORD_*` | Credenciales Discord | Ver template |
| `TELEGRAM_*` | Credenciales Telegram | Ver template |
| `N8N_*` | URLs de N8N | Ver template |
| `JWT_SECRET` | Secreto para sesiones | `openssl rand -hex 32` |
| `INTERNAL_API_KEY` | API key interna | `openssl rand -hex 32` |
| `APP_BASE_URL` | URL base pública | http://tu-ip:8086 |

## Desarrollo Local

Para desarrollar localmente con volúmenes (los cambios se ven sin rebuild):

```bash
docker compose -f docker-compose.local.yml up -d
```

Para producción (imagen autocontenida):

```bash
docker compose -f docker-compose.yml build
docker compose -f docker-compose.yml up -d
```

## Puertos

- **8086** → Puerto HTTP del contenedor (80)

## Servicios

- **Apache2** - Servidor web
- **Discord Bot** - Bot de Discord
- **Translation Worker** - Procesador de traducciones

## Volúmenes Persistentes

Los volúmenes para logs y galería se crean automáticamente con Docker:

- `bot-logs` → /var/www/html/bot/logs
- `bot-galeria` → /var/www/html/bot/galeria

Para verlos:
```bash
docker volume ls | grep bot
```

## Solución de Problemas

### El contenedor no inicia

```bash
docker logs bot_lastwar_funcionando
```

### Verificar variables de entorno

```bash
docker exec bot_lastwar_funcionando env | grep -E "DB_|DISCORD_|TELEGRAM_|APP_"
```

### Verificar archivo .env generado

```bash
docker exec bot_lastwar_funcionando cat /var/www/html/bot/.env
```

### Base de datos no conecta

Verificar credenciales en variables de entorno.

### Reiniciar contenedor

```bash
docker restart bot_lastwar_funcionando
```

## Construcción de imagen (para actualizar)

```bash
# En la carpeta del proyecto
docker compose build

# Subir al registry
docker tag bot-bot-lastwar:latest 10.10.4.3:5000/bot-lastwar:latest
docker push 10.10.4.3:5000/bot-lastwar:latest
```
