Docker
Exécutez Miravo dans Docker — images multi-arch, Docker Compose, variables d'environnement, volumes, sondes de santé et configuration Kubernetes.
Miravo publie des images Docker multi-arch pour linux/amd64 et linux/arm64.
| Registre | Image |
|---|---|
| Docker Hub | amineamaach/miravo:latest |
| GitHub Container Registry | ghcr.io/amine-amaach/miravo:latest |
Épinglez un tag de version : amineamaach/miravo:0.3.0
Démarrage rapide
Section intitulée « Démarrage rapide »docker run --rm -p 1883:1883 -p 8080:8080 amineamaach/miravo:latestAvec un template spécifique :
docker run --rm -p 1883:1883 -p 8080:8080 \ amineamaach/miravo:latest start --template water-treatmentAvec OPC UA :
docker run --rm -p 1883:1883 -p 4840:4840 -p 8080:8080 \ amineamaach/miravo:latest start --template smart-factory --opcuaDocker Compose
Section intitulée « Docker Compose »services: miravo: image: amineamaach/miravo:latest init: true command: ["--log-format", "json", "start"] environment: MIRAVO_ADMIN_HOST: 0.0.0.0 MIRAVO_ADMIN_PORT: 8080 ports: - "1883:1883" - "8080:8080" read_only: true tmpfs: - /tmp:size=256m security_opt: - no-new-privileges:true cap_drop: - ALL stop_grace_period: 30s healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/healthz > /dev/null || exit 1"] interval: 30s timeout: 5s retries: 3 start_period: 20s restart: "on-failure:5" logging: driver: json-file options: max-size: "10m" max-file: "5" deploy: resources: limits: cpus: "4" memory: 4GPorts exposés
Section intitulée « Ports exposés »| Port | Protocole | Description |
|---|---|---|
1883 | MQTT | Broker intégré (quand MQTT activé) |
4840 | OPC UA | Serveur OPC UA (quand --opcua activé) |
8080 | HTTP | API admin et console web |
Variables d’environnement
Section intitulée « Variables d’environnement »Définissez n’importe quelle variable MIRAVO_* dans environment :
environment: MIRAVO_ADMIN_HOST: 0.0.0.0 MIRAVO_ADMIN_PORT: 8080 MIRAVO_MQTT_PORT: 1883 MIRAVO_NAME: my-simulation MIRAVO_TEMPLATE: water-treatmentConsultez Variables d’environnement pour la référence complète.
Contenu personnalisé
Section intitulée « Contenu personnalisé »Montez des modèles ou templates personnalisés dans le conteneur :
volumes: - ./my-models:/app/custom-models:rocommand: ["start", "--template", "/app/custom-models/my-plant.miravo.yaml"]Ou utilisez le registre local :
volumes: - ./miravo-data:/data/miravoenvironment: MIRAVO_HOME: /data/miravoSondes de santé
Section intitulée « Sondes de santé »Le conteneur inclut une vérification de santé intégrée :
| Endpoint | Utilisation | Sain |
|---|---|---|
GET /healthz | Sonde de vivacité | Moteur en cours, boucle de tick progresse |
GET /readyz | Sonde de disponibilité | Moteur en cours + tous les adaptateurs connectés |
Exemple Kubernetes :
livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 20 periodSeconds: 30readinessProbe: httpGet: path: /readyz port: 8080 initialDelaySeconds: 20 periodSeconds: 10Sécurité
Section intitulée « Sécurité »L’image par défaut s’exécute en tant qu’utilisateur non-root (miravo, UID 10001). Le profil Compose ajoute :
read_only: true— Système de fichiers racine en lecture seulecap_drop: ALL— Suppression de toutes les capacités Linuxno-new-privileges— Empêche l’escalade de privilègestmpfssur/tmppour l’espace de travail temporaire