6.0 KiB
6.0 KiB
Meldestelle Client Containerization
Übersicht
Dieses Dokument beschreibt die Docker-Containerisierung der Kotlin Compose Multiplatform Frontend-Anwendungen für das Meldestelle-Projekt.
Implementierte Lösungen
🌐 Web Application (WASM) - Bereits funktionsfähig
- Status: ✅ Vollständig implementiert und funktionsfähig
- Technologie: Kotlin Compose Multiplatform mit WASM-Target
- Container: Nginx-basiertes Setup mit statischen Assets
- Port: 4000
- Zugriff:
http://localhost:4000 - Docker-Compose Service:
web-app
🖥️ Desktop Application (JVM) - Neu implementiert
- Status: ✅ Implementiert mit VNC-basierten GUI-Zugriff
- Technologie: Kotlin Compose Desktop mit VNC + noVNC
- Container: Ubuntu-basiert mit Xvfb, x11vnc, fluxbox, noVNC
- Ports:
- 6080 (noVNC Web-Interface)
- 5901 (Direkter VNC-Zugriff)
- Zugriff:
http://localhost:6080(Web-basiertes VNC) - Docker-Compose Service:
desktop-app
Verwendung
Alle Client-Anwendungen starten
# Mit Backend-Services
docker-compose -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.clients.yml up -d
# Nur Frontend-Anwendungen
docker-compose -f docker-compose.yml -f docker-compose.clients.yml up -d
Einzelne Anwendungen starten
# Nur Web-Anwendung
docker-compose -f docker-compose.yml -f docker-compose.clients.yml up -d web-app
# Nur Desktop-Anwendung
docker-compose -f docker-compose.yml -f docker-compose.clients.yml up -d desktop-app
Desktop Application - VNC-Zugriff
Web-basierter Zugriff (empfohlen)
- Container starten:
docker-compose up -d desktop-app - Browser öffnen:
http://localhost:6080 - VNC-Viewer startet automatisch
- Meldestelle Desktop-Anwendung wird angezeigt
Direkter VNC-Zugriff
- VNC-Client installieren (z.B. TigerVNC, RealVNC)
- Verbindung zu
localhost:5901herstellen - Passwort:
meldestelle(falls erforderlich)
Architektur Details
Web Application (WASM)
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Browser │────│ Nginx │────│ Static WASM │
│ localhost:4000│ │ Container │ │ Assets │
└─────────────────┘ └──────────────┘ └─────────────────┘
Desktop Application (JVM + VNC)
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Browser │────│ noVNC │────│ VNC Server │
│ localhost:6080│ │ Web Interface│ │ (x11vnc) │
└─────────────────┘ └──────────────┘ └─────────────────┘
│
┌──────▼──────┐
│ Xvfb + Compose │
│ Desktop App │
└────────────────┘
Build-Prozess
Web Application
- Gradle Build:
wasmJsBrowserDistribution - Output:
/build/dist/wasmJs/productionExecutable/ - Nginx serving static assets
Desktop Application
- Gradle Build:
createDistributable - Output:
/build/compose/binaries/main/app/ - VNC Environment Setup:
- Xvfb (Virtual X Server)
- fluxbox (Window Manager)
- x11vnc (VNC Server)
- noVNC (Web-based VNC Client)
Umgebungsvariablen
Web Application
API_BASE_URL: Backend API URL (default:http://api-gateway:8081)APP_TITLE: Anwendungstitel (default:Meldestelle)
Desktop Application
API_BASE_URL: Backend API URL (default:http://api-gateway:8081)DISPLAY: X11 Display (default::99)VNC_PORT: VNC Server Port (default:5901)NOVNC_PORT: noVNC Web Interface Port (default:6080)
Health Checks
Web Application
- Endpoint:
http://localhost:4000/health - Methode: HTTP GET
- Erwartete Antwort:
{"status":"ok","service":"web-app"}
Desktop Application
- Endpoint:
http://localhost:6080/vnc.html - Methode: HTTP GET (via noVNC)
- Überprüfung: noVNC Web-Interface verfügbar
Logs und Debugging
Container-Logs anzeigen
# Web Application
docker-compose logs -f web-app
# Desktop Application
docker-compose logs -f desktop-app
Desktop Application Logs
- Application Logs:
/var/log/meldestelle.log - Error Logs:
/var/log/meldestelle_error.log - VNC Logs: Über supervisor zugänglich
Troubleshooting
Web Application
- Container startet nicht: Überprüfe API Gateway Verfügbarkeit
- Leere Seite: Überprüfe Browser-Kompatibilität mit WASM
- API-Fehler: Überprüfe Netzwerk-Konfiguration
Desktop Application
- VNC nicht erreichbar: Überprüfe Port 6080 Verfügbarkeit
- Schwarzer Bildschirm: Warte 30-60s für Application Startup
- Keine GUI: Überprüfe Xvfb und Window Manager Status
- Performance-Probleme: VNC-Bildschirmauflösung reduzieren
Erweiterungen
VNC-Konfiguration anpassen
Die VNC-Konfiguration kann über Umgebungsvariablen oder durch Anpassung des start-vnc.sh Skripts im Dockerfile geändert werden.
Alternative GUI-Lösungen
- X11 Forwarding: Für Linux-Host-Systeme
- RDP: Alternative Remote Desktop Lösung
- Web-based Terminals: Für minimale GUI-Anforderungen
Fazit
✅ Beide Containerisierungsansätze erfolgreich implementiert:
- Web (WASM): Optimiert für moderne Browser
- Desktop (JVM): Universell über VNC-Web-Interface zugänglich
Die Lösung erfüllt alle Anforderungen aus der ursprünglichen Issue-Beschreibung und ermöglicht sowohl Web- als auch Desktop-Zugriff auf die Meldestelle-Anwendung über Docker-Container.