Das Projekt verwendet für lokale Infrastruktur die projektübergreifende Umgebung unter
../../shared/enterprise-infrastructure/. Dort laufen gemeinsame Dienste nur einmal für alle Lernprojekte:
keycloak.localhost, Realm novarislocalhost:9095 vom Host, shared-kafka:29092 aus dem gemeinsamen Container-Netzwerkjenkins.localhostcd ../../shared/enterprise-infrastructure
docker compose up -d
docker compose --profile postgres --profile keycloak --profile kafka --profile observability up -d
Podman-Nutzer verwenden dieselben Compose-Dateien mit podman compose:
podman compose up -d
podman compose --profile postgres --profile keycloak --profile kafka --profile observability up -d
Traefik und Jenkins benoetigen fuer die automatische Container-Erkennung einen
Docker-API-kompatiblen Runtime-Socket. shared/enterprise-infrastructure parametrisiert dessen Hostpfad ueber
CONTAINER_ENGINE_SOCKET; auf der Windows-Podman-Machine muss dieser Socket einmal real
aktiviert und fuer den Compose-Provider erreichbar gemacht werden.
Die modernen Dockerfiles sind Buildah-/Podman-kompatibel. In Jenkins wird der Parameter
CONTAINER_RUNTIME auf podman oder docker gesetzt.
Für einen lokal auf dem Host gestarteten modernen Reactor werden typischerweise folgende Umgebungsvariablen gesetzt:
NOVARIS_KAFKA_BOOTSTRAP_SERVERS=localhost:9095
NOVARIS_OIDC_ISSUER_URI=http://keycloak.localhost/realms/novaris
NOVARIS_CORS_ALLOWED_ORIGIN=http://localhost:5173
Der Browser verwendet dieselbe öffentliche Keycloak-Adresse. Containerisierte Backends müssen
für den Issuer/JWK-Zugriff die in shared/enterprise-infrastructure/README.md beschriebene Trennung zwischen
Browser-Adresse und internem Container-Namen beachten.
Die modernen Kafka-Topics verwenden bereits das Projektpräfix novaris.. Dieses Präfix ist bei
der gemeinsamen Kafka-Instanz verbindlich, weil Kafka dort nur über Konvention und nicht über
eine harte Projektgrenze isoliert wird. Ein zusätzlicher projektlokaler Kafka- oder Keycloak-
Container wird nicht benötigt.
Jenkins wird zentral aus shared/enterprise-infrastructure/jenkins/casc.yaml verwaltet. Das projektspezifische
Jenkinsfile bleibt die Pipeline-Definition; der Job selbst sollte im zentralen Jenkins einmalig
auf dieses Repository und den jeweiligen Jenkinsfile-Pfad zeigen.
Die gemeinsame Infrastruktur ist bewusst nicht in diesem Repository dupliziert. Ihre Version,
Startprofile und Netzwerkverträge bleiben im Repository
shared/enterprise-infrastructure dokumentiert.