diff --git a/README.md b/README.md index 0f270743..386e253e 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ - [Arquitectura del Proyecto](#arquitectura-del-proyecto) - [Requisitos del Sistema](#requisitos-del-sistema) - [Instalación y Construcción](#instalación-y-construcción) +- [Ejecución con Docker](#ejecución-con-docker) - [Estructura del Proyecto](#estructura-del-proyecto) - [Módulos y Plugins](#módulos-y-plugins) - [Modelos de Consenso Implementados](#modelos-de-consenso-implementados) @@ -208,6 +209,85 @@ Los artefactos de construcción se generan en `releng/afryca.application.product --- +## Ejecución con Docker + +AFRYCA puede ejecutarse en un contenedor Docker sin necesidad de instalar Java ni dependencias GTK en el sistema anfitrión. La aplicación se sirve mediante **TigerVNC + noVNC**, accesible desde cualquier navegador web. + +### Requisitos + +- [Docker](https://www.docker.com/get-started) con Docker Compose (v2+) +- El proyecto debe estar previamente compilado (`mvn clean install`) + +### Arranque rápido + +**1. Dar permiso de ejecución al lanzador** (solo la primera vez tras compilar): + +```bash +chmod +x releng/afryca.application.product/target/products/afryca/linux/gtk/x86_64/afryca +``` + +**2. Construir la imagen:** + +```bash +docker compose build +``` + +**3. Levantar el contenedor:** + +```bash +docker compose up -d +``` + +**4. Abrir en el navegador:** + +``` +http://localhost:6080/vnc.html?autoconnect=true&resize=scale +``` + +No se requiere contraseña. La interfaz escala automáticamente al tamaño de la ventana del navegador. + +### Parar y limpiar + +```bash +# Parar el contenedor +docker compose down + +# Parar y eliminar el workspace persistente +docker compose down -v +``` + +### Arquitectura del contenedor + +``` +┌──────────────────────────────────────────────────────────────┐ +│ Docker (linux/amd64 via Rosetta en Apple Silicon) │ +│ │ +│ TigerVNC (Xvnc :1) ←─────────────────────────────────┐ │ +│ │ │ │ +│ Openbox (window manager) │ │ +│ │ │ │ +│ AFRYCA (GTK3 + SWT) ──── renderiza en display :1 ─────┘ │ +│ │ +│ websockify + noVNC ──── http://localhost:6080 ─────────────────▶ Navegador +└──────────────────────────────────────────────────────────────┘ +``` + +**TigerVNC** integra en un único proceso el servidor X11 y el servidor VNC, lo que ofrece mejor rendimiento que la alternativa Xvfb + x11vnc. + +### Archivos Docker + +| Archivo | Descripción | +|---------|-------------| +| `Dockerfile.run` | Imagen de ejecución (eclipse-temurin:11 + GTK + TigerVNC + noVNC) | +| `entrypoint.sh` | Arranca Xvnc, Openbox, noVNC y lanza AFRYCA | +| `docker-compose.yml` | Orquestación: monta el build Linux x86_64 como volumen | + +### Nota sobre Apple Silicon (M1/M2/M3) + +En Mac con procesador ARM, Docker ejecuta la imagen `linux/amd64` mediante emulación Rosetta. La aplicación funciona correctamente, aunque con algo más de latencia que en hardware x86 nativo. + +--- + ## Estructura del Proyecto ``` @@ -241,6 +321,9 @@ afryca-master/ │ └── 3.0 - Cameroon/ # Tema versión 3.0 (actual) │ ├── workspace/ # Workspace Eclipse de trabajo +├── Dockerfile.run # Imagen Docker de ejecución +├── entrypoint.sh # Script de arranque del contenedor +├── docker-compose.yml # Orquestación Docker ├── pom.xml # POM raíz Maven ├── build.bat # Script de construcción (Windows) └── clean.bat # Script de limpieza (Windows)