Aller au contenu

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.

RegistreImage
Docker Hubamineamaach/miravo:latest
GitHub Container Registryghcr.io/amine-amaach/miravo:latest

Épinglez un tag de version : amineamaach/miravo:0.3.0

Fenêtre de terminal
docker run --rm -p 1883:1883 -p 8080:8080 amineamaach/miravo:latest

Avec un template spécifique :

Fenêtre de terminal
docker run --rm -p 1883:1883 -p 8080:8080 \
amineamaach/miravo:latest start --template water-treatment

Avec OPC UA :

Fenêtre de terminal
docker run --rm -p 1883:1883 -p 4840:4840 -p 8080:8080 \
amineamaach/miravo:latest start --template smart-factory --opcua
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: 4G
PortProtocoleDescription
1883MQTTBroker intégré (quand MQTT activé)
4840OPC UAServeur OPC UA (quand --opcua activé)
8080HTTPAPI admin et console web

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-treatment

Consultez Variables d’environnement pour la référence complète.

Montez des modèles ou templates personnalisés dans le conteneur :

volumes:
- ./my-models:/app/custom-models:ro
command: ["start", "--template", "/app/custom-models/my-plant.miravo.yaml"]

Ou utilisez le registre local :

volumes:
- ./miravo-data:/data/miravo
environment:
MIRAVO_HOME: /data/miravo

Le conteneur inclut une vérification de santé intégrée :

EndpointUtilisationSain
GET /healthzSonde de vivacitéMoteur en cours, boucle de tick progresse
GET /readyzSonde de disponibilitéMoteur en cours + tous les adaptateurs connectés

Exemple Kubernetes :

livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 20
periodSeconds: 30
readinessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: 20
periodSeconds: 10

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 seule
  • cap_drop: ALL — Suppression de toutes les capacités Linux
  • no-new-privileges — Empêche l’escalade de privilèges
  • tmpfs sur /tmp pour l’espace de travail temporaire