# Manual de Despliegue con Docker - Admin PosCloud (Laravel 12)

Guía rápida para levantar y conectar el panel administrativo **Admin_PosCloud_V12** con la base de datos compartida de **PosCloudG_V12** utilizando Docker en local o en un VPS (compatible con **Dokploy**).

---

## 1. Arquitectura de Base de Datos Compartida

Ambos proyectos están configurados para comunicarse mediante una red interna compartida (`poscloud_shared_net`):

```
       [ PosCloudG_V12 (POS) ] (Puerto 80)
                 |
                 +---> [ MySQL 8.0 (poscloud_db) ] <---+
                                                        |
                                       [ Admin_PosCloud_V12 ] (Puerto 8000)
```

* **MySQL central:** Corre en el contenedor `poscloud_db` dentro de `PosCloudG_V12`.
* **phpMyAdmin central:** Disponible en `http://localhost:8080`.
* **Admin PosCloud:** Se conecta directamente a `poscloud_db` a través de la red de Docker sin duplicar bases de datos ni gastar memoria RAM innecesaria. Ambos ven exactamente los mismos datos en tiempo real.

---

## 2. Puesta en Marcha Rápida (Local)

### Paso 1: Levantar primero el sistema POS (donde vive MySQL)
En una terminal, entra a la carpeta del POS:
```bash
cd PosCloudG_V12
docker compose up -d
```

### Paso 2: Levantar el Panel Administrativo
En otra terminal, entra a la carpeta del Admin:
```bash
cd Admin_PosCloud_V12
docker compose up -d --build
```

### Paso 3: Acceso a los servicios
* **Panel Administrativo (Laravel):** [http://localhost:8000](http://localhost:8000)
* **Sistema POS:** [http://localhost](http://localhost)
* **phpMyAdmin (Bases de datos de ambos):** [http://localhost:8080](http://localhost:8080)

---

## 3. Comandos de Laravel en Docker

Para ejecutar tareas de Artisan o Composer dentro del contenedor del Admin:

```bash
# Limpiar caché de Laravel
docker compose exec app php artisan optimize:clear

# Generar enlace simbólico para archivos públicos
docker compose exec app php artisan storage:link

# Ejecutar migraciones si se agregan tablas nuevas
docker compose exec app php artisan migrate

# Ver logs de Laravel en tiempo real
docker compose logs -f app
```

---

## 4. Despliegue en Dokploy (VPS)

En **Dokploy** la integración es directa:

1. Creas un servicio de **Database (MySQL)** en Dokploy (ej. nombre: `mysql-db`).
2. Despliegas **PosCloudG_V12** asignando en sus variables de entorno: `DB_HOST=mysql-db`.
3. Despliegas **Admin_PosCloud_V12** asignando en sus variables de entorno: `DB_HOST=mysql-db`.
4. Ambos sistemas quedarán conectados a la misma base de datos, con certificados SSL independientes para cada subdominio:
   * POS: `pos.tudominio.com`
   * Admin: `admin.tudominio.com`

---

## 5. Modo Desarrollo Local (Cambios en Vivo)

Para programar en tu editor y ver los cambios al instante en `http://localhost:8000`:
1. En `docker-compose.yml`, dentro de `services -> app -> volumes`, descomenta la línea:
   ```yaml
   - .:/var/www/html
   ```
2. Aplica con: `docker compose up -d`
