diff --git a/DOCKER-ARCHITECTURE-2026-05-05.md b/DOCKER-ARCHITECTURE-2026-05-05.md new file mode 100644 index 00000000..08c54c0e --- /dev/null +++ b/DOCKER-ARCHITECTURE-2026-05-05.md @@ -0,0 +1,151 @@ +# Smart City Digital Twin - Cartographie Docker (Architecture & Réseaux) +**Date** : 05 mai 2026 +**Projet** : `smart-city-digital-twin-martinique` +**Auteur** : Éric FELIXINE (via Hermes Agent) + +--- + +## 1. Vue d'ensemble +Cette cartographie présente l'architecture Docker complète du jumeau numérique Smart City (Martinique), incluant les conteneurs, images, réseaux et ports exposés. + +--- + +## 2. Liste des Conteneurs Actifs (Projet Smart City) + +| Conteneur | Image | Réseaux | Ports | +|-----------|-------|----------|-------| +| `frost-api-8090` | `fraunhoferiosb/frost-server-http:latest` | `bridge`, `frost_http_default` | `0.0.0.0:8090→8080/tcp` | +| `stellio-api-exposed2` | `stellio-api-gateway:exposed` | `stellio-context-broker_default` | `0.0.0.0:8087→8080/tcp` | +| `mosquitto-exporter` | `sapcc/mosquitto-exporter:latest` | `smartcity-shared`, `traefik-public` | `0.0.0.0:9234→9234/tcp` | +| `prometheus-brokers` | `prom/prometheus:latest` | `smartcity-shared`, `traefik-public` | `9090/tcp` | +| `digital-twin-grafana` | `grafana/grafana:10.2.0` | `fiware-gis-quickstart_fiware`, `frost_http_default`, `smartcity-shared`, `traefik-public`, `digital-twin_digital-twin`, `docker_default` | `0.0.0.0:3001→3000/tcp` | +| `geoserver_stack-geoserver-1` | `oscarfonts/geoserver:2.25.2` | `frost_http_default`, `traefik-public` | `8080/tcp` | +| `grafana_stack-grafana-1` | `grafana/grafana:latest` | `frost_http_default`, `traefik-public` | `3000/tcp` | +| `frost_http-database-1` | `postgis/postgis:16-3.4-alpine` | `frost_http_default` | `5432/tcp` | +| `openremote-keycloak-1` | `openremote/keycloak:latest` | `openremote_default`, `smartcity-shared` | `8080/tcp`, `8443/tcp` | +| `openremote-manager-1` | `openremote/manager:latest` | `smartcity-shared`, `openremote_default` | `1883/tcp`, `8080/tcp`, `8443/tcp`, `127.0.0.1:8405→8405/tcp` | +| `openremote-postgresql-1` | `openremote/postgresql:latest-slim` | `openremote_default` | `5432/tcp`, `8008/tcp`, `8081/tcp` | +| `traefik` | `traefik:v3.0` | `openremote_default`, `traefik-public` | `0.0.0.0:80→80/tcp`, `0.0.0.0:443→443/tcp`, `0.0.0.0:1884→1884/tcp`, `127.0.0.1:9080→8080/tcp` | +| `mosquitto-traefik` | `eclipse-mosquitto:2.0` | `smartcity-shared`, `traefik-public` | `0.0.0.0:1883→1883/tcp`, `127.0.0.1:38084→8081/tcp`, `127.0.0.1:38884→8883/tcp` | +| `emqx_emqx_1` | `emqx/emqx:latest` | `emqx_default`, `smartcity-shared`, `traefik-public` | `4370/tcp`, `5369/tcp`, `8083-8084/tcp`, `0.0.0.0:11883→1883/tcp`, `0.0.0.0:18081→8081/tcp`, `0.0.0.0:18883→8883/tcp`, `0.0.0.0:38083→18083/tcp` | +| `stellio-search-service` | `stellio/stellio-search-service:latest-dev` | `stellio-context-broker_default`, `traefik-public`, `smartcity-shared` | `8083/tcp` | +| `stellio-subscription-service` | `stellio/stellio-subscription-service:latest-dev` | `smartcity-shared`, `stellio-context-broker_default`, `traefik-public` | `8084/tcp` | +| `stellio-kafka` | `confluentinc/cp-kafka:8.1.0` | `stellio-context-broker_default` | `9092/tcp`, `0.0.0.0:29092→29092/tcp` | +| `stellio-postgres` | `stellio/stellio-timescale-postgis:16-2.24.0-3.6` | `stellio-context-broker_default` | `5432/tcp` | +| `stellio-api-gateway` | `stellio/stellio-api-gateway:latest-dev` | `stellio-context-broker_default`, `traefik-public`, `smartcity-shared` | `8080/tcp` | +| `digital-twin-nodered` | `nodered/node-red:3.1` | `docker_default`, `smartcity-shared`, `traefik` | `0.0.0.0:1880→1880/tcp` | +| `digital-twin-postgis` | `postgis/postgis:15-3.4` | `digital-twin_digital-twin`, `docker_default`, `smartcity-shared` | `0.0.0.0:5433→5432/tcp` | +| `digital-twin-connector` | `python:3.11-slim` | `digital-twin_digital-twin` | - | +| `digital-twin-influxdb` | `influxdb:2.7-alpine` | `digital-twin_digital-twin`, `docker_default`, `smartcity-shared` | `0.0.0.0:8086→8086/tcp` | +| `fiware-gis-quickstart-orionproxy-1` | `fiware-gis-quickstart-orionproxy` | `fiware-gis-quickstart_fiware` | `127.0.0.1:1026→80/tcp` | +| `fiware-gis-quickstart-orion-1` | `quay.io/fiware/orion-ld` | `fiware-gis-quickstart_fiware`, `smartcity-shared`, `traefik-public` | `127.0.0.1:2026→1026/tcp` | +| `honcho-grafana-1` | `grafana/grafana:11.4.0` | `honcho_default` | `127.0.0.1:3088→3000/tcp` | +| `honcho-prometheus-1` | `prom/prometheus:v3.2.1` | `honcho_default` | `127.0.0.1:9091→9090/tcp` | + +--- + +## 3. Liste des Réseaux Docker (Projet) + +| Réseau | Conteneurs Connectés | +|---------|----------------------| +| `smartcity-shared` | `digital-twin-grafana`, `mosquitto-exporter`, `prometheus-brokers`, `openremote-keycloak-1`, `openremote-manager-1`, `stellio-search-service`, `stellio-subscription-service`, `stellio-api-gateway`, `digital-twin-nodered`, `digital-twin-postgis`, `digital-twin-influxdb`, `emqx_emqx_1`, `fiware-gis-quickstart-orion-1` | +| `frost_http_default` | `frost-api-8090`, `geoserver_stack-geoserver-1`, `grafana_stack-grafana-1`, `digital-twin-grafana`, `frost_http-database-1` | +| `stellio-context-broker_default` | `stellio-api-exposed2`, `stellio-search-service`, `stellio-subscription-service`, `stellio-kafka`, `stellio-postgres`, `stellio-api-gateway` | +| `traefik-public` | `digital-twin-grafana`, `mosquitto-exporter`, `prometheus-brokers`, `geoserver_stack-geoserver-1`, `stellio-search-service`, `stellio-subscription-service`, `stellio-api-gateway`, `emqx_emqx_1`, `digital-twin-nodered`, `traefik` | +| `digital-twin_digital-twin` | `digital-twin-grafana`, `digital-twin-postgis`, `digital-twin-connector`, `digital-twin-influxdb` | +| `docker_default` | `digital-twin-grafana`, `digital-twin-postgis`, `digital-twin-influxdb`, `digital-twin-nodered` | +| `fiware-gis-quickstart_fiware` | `fiware-gis-quickstart-orionproxy-1`, `fiware-gis-quickstart-orion-1`, `digital-twin-grafana` | +| `openremote_default` | `openremote-keycloak-1`, `openremote-manager-1`, `openremote-postgresql-1`, `traefik` | +| `emqx_default` | `emqx_emqx_1` | +| `honcho_default` | `honcho-grafana-1`, `honcho-prometheus-1` | +| `bridge` | `frost-api-8090` | + +--- + +## 4. Diagramme d'Architecture (Mermaid) + +```mermaid +graph TD + subgraph Traefik_Public [Traefik Public Network] + TR[Traefik\n:80/:443] --- DG[digital-twin-grafana\n:3001] + TR --- MO[mosquitto-exporter\n:9234] + TR --- PR[prometheus-brokers\n:9090] + TR --- GE[geoserver\n:8080] + TR --- SG[stellio-search\n:8083] + TR --- SS[stellio-subscription\n:8084] + TR --- AG[stellio-api-gateway\n:8087] + TR --- EM[emqx\n:11883/:18883] + TR --- NR[digital-twin-nodered\n:1880] + end + + subgraph SmartCity_Shared [SmartCity Shared Network] + DG --- IF[digital-twin-influxdb\n:8086] + DG --- PG[digital-twin-postgis\n:5433] + DG --- ORK[openremote-keycloak\n:8080] + DG --- ORM[openremote-manager\n:8405] + DG --- ST[stellio-services] + DG --- EM + end + + subgraph FROST_Network [FROST Default Network] + FR[frost-api-8090\n:8090] --- FD[frost-http-database\n:5432] + FR --- GE + FR --- DG + end + + subgraph Stellio_Network [Stellio Context Broker Network] + ST[stellio-services] --- SA[stellio-api-exposed2\n:8087] + ST --- SK[stellio-kafka\n:29092] + ST --- SP[stellio-postgres\n:5432] + end + + subgraph Orion_Network [FIWARE Orion Network] + OR[fw-orion-1\n:2026] --- OP[fw-orion-proxy-1\n:1026] + OP --- DG + end + + subgraph OpenRemote_Network [OpenRemote Default Network] + ORK --- ORM + ORM --- ODB[openremote-postgresql\n:5432] + ORK --- TR + end + + subgraph DigitalTwin_Network [Digital Twin Custom Network] + DG --- IF + DG --- PG + DG --- DC[digital-twin-connector] + end + + %% Flux de données simplifiés + EM -->|MQTT| DG + EM -->|MQTT| OR + OR -->|NGSI-LD| FR + OR -->|NGSI-LD| ST + IF -->|InfluxDB| DG + DG -->|Grafana Dashboards| User[Utilisateur] +``` + +--- + +## 5. Connexions Clés + +1. **Traefik** (`:80`/`:443`) : Reverse proxy pour tous les services exposés à l'hôte. +2. **Brokers MQTT** (Mosquitto `:1883`, EMQX `:11883`) : Réception des données du simulateur et des capteurs IoT. +3. **Context Brokers** (Orion-LD `:2026`, Stellio `:8087`) : Reçoivent les données NGSI-LD et les transmettent à FROST et Grafana. +4. **FROST-Server** (`:8090`) : Stockage des données OGC SensorThings, connecté à PostgreSQL (`frost_http-database-1`). +5. **Grafana** (`:3001`) : Visualisation des données depuis InfluxDB, Prometheus, et (via adaptateurs) Orion-LD/Stellio. +6. **OpenRemote** (`:8080`) : Gestion des assets IoT, authentification via Keycloak, proxyé par Traefik. +7. **GeoServer** (`:8080`) : Serveur de tuiles cartographiques, connecté au réseau FROST. +8. **Node-RED** (`:1880`) : Alternative possible pour le simulateur IoT (projeté). + +--- + +## 6. Références +- **Projet** : `~/smart-city-digital-twin-martinique/` +- **Skills** : `postman-fiware`, `smart-city-traceability-setup`, `openremote-map-configuration` +- **Session Resume** : `session_resume_2026-05-04.md` +- **Documentation Grafana** : `GRAFANA-STATUS-FINAL.md` + +--- + +*Cartographie générée automatiquement le 05 mai 2026 à 14:30 (UTC-4) par Hermes Agent.* \ No newline at end of file