Docs: Complete Docker architecture cartography (Smart City)

- Markdown file with full container list, networks, Mermaid diagram
- 25+ active containers (FROST, Stellio, Orion-LD, OpenRemote, etc.)
- 10+ Docker networks (smartcity-shared, frost_http_default, etc.)
- Mermaid diagram showing architecture and connections
- PDF generation requires external tools (pandoc + wkhtmltopdf)
- Reference file for project infrastructure
This commit is contained in:
Eric FELIXINE
2026-05-05 00:11:30 -04:00
parent d2a6396ab2
commit 13d6f9c175

View File

@@ -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.*