Salut,
Quelques infos rapides sur docker/docker-compose :
Techniquement docker-compose c’est juste une notation dans un fichier de ce qu’on fait en ligne de commande :
Par exemple la déclaration d’un volume est présente Zigbee2MQTT
-v $(pwd)/data:/app/data \
ça monte le répertoire courant $pwd
dans à la place de /app/data
dans le container
au format docker-compose l’équivalent c’est
volumes:
- ./data:/app/data
Après en allant plus loin docker-compose ça permet aussi de monter plusieurs containers d’un coup, de gérer l’ordre de lancement, de faire les build, les stage, les pull etc… dans 1 seul fichier.
L’avantage du docker-compose c’est que ça laisse une trace …la(es) ligne(s) de commande, si elle(s) est(sont) pas notée(s) quelques part, on a vite fait de tout oublier.
Dans l’exemple en lien ci-dessus, il y a pas trop de question à se poser, tout est déjà fait (pas forcement de la manière la plus propre (à cause des privilèges) mais ça marche sans se prendre la tête… La seule difficulté c’est fournir la bonne demi-ligne pour l’usb…
devices:
- /dev/ttyACM0:/dev/ttyACM0
La première partie (- /dev/ttyACM0:)
peut varier (ça correspond à la clé telle que vu sur la VM). La seconde est fixe (dans le container il n’y a qu’une clé exploitée)
Dernier point, les données sont persistantes dans une certaine mesure sans les volumes car elles sont toujours rattachées au même container, même après arrêt/relance de celui-ci. Par contre, si le container change d’id, il récupère rien de l’ancien (c’est pas les siennes)…
Pour le réseau c’est moins important, il faut juste que zigbee2mqtt et mosquitto soit dans le même pour se joindre facilement. Que ce soit un nouveau à chaque fois ou toujours le même importe pas vraiment
Allez puisque tu as cherché et manifestement compris quelques notions importantes, voilà ce que j’ai chez moi (et adapté pour jeedom)
version: '3.8'
########################################################
networks:
mqtt:
name: mqtt
########################################################
services:
mosquitto:
restart: unless-stopped
environment:
- TIMEZONE=Europe/Paris
- PUID=33
container_name: mosquitto
ports:
- '1883:1883'
volumes:
- '/applications/docker/mqtt/mosquitto/mosquitto.db:/mosquitto/data/mosquitto.db'
- '/applications/docker/mqtt/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf'
- '/applications/docker/mqtt/mosquitto/passwordfile:/passwordfile'
- '/etc/localtime:/etc/localtime:ro'
- '/etc/timezone:/etc/timezone:ro'
image: 'eclipse-mosquitto:latest'
networks:
- mqtt
user: "33:20"
########################################################
zigbee2mqtt:
restart: unless-stopped
depends_on:
- "mosquitto"
ports:
- '8080:8080'
environment:
- TIMEZONE=Europe/Paris
container_name: zigbee2mqtt
volumes:
- '/applications/docker/mqtt/zigbee2mqtt:/app/data'
- '/run/udev:/run/udev:ro'
- '/etc/localtime:/etc/localtime:ro'
- '/etc/timezone:/etc/timezone:ro'
devices:
- /dev/ttyACM0:/dev/ttyACM0
privileged: true
image: 'koenkk/zigbee2mqtt:latest'
networks:
- mqtt
user: "33:20"
Donc mes données persistantes sont dans /applications/docker/mqtt/
A toi d’adapter… pour le contenu de mosquitto.conf et configuration.yaml