Page 1 sur 1

Domoticz et Docker

Publié : 27 juil. 2018, 10:41
par Sopalin
Hello à tous,

Je suis en train de réfléchir à migrer mon installation sous docker pour faciliter les mises à jours et éviter les conflits entre les différentes applications qui tournent sous mon RPI (domoticz, kodi, homebridge, mydomoathome....)

J'ai regardé la dock de docker pour docmoticz mais je me pose une question. Dans la docs il précise qu'il faut mapper le dossier Config sur le RPI mais la DB quand a elle reste dans le docker, or si le docker redémarre on perds la DB et donc nos config.

Est-ce que certaines personnes ici utilisent domoticz et docker ? Je serais curieux de connaitre leur config.

Merci.

Re: Domoticz et Docker

Publié : 27 juil. 2018, 16:50
par rimram31
J'ai une instance dockerisée (pour test) et quelques autres joyeuseries sous docker (j'utilise en pro). Je n'ai pas la configuration exacte sous la main mais le principe est d'utiliser un "volume" (option -v de la commande docker) qui va "mounter" un volume de la machine sur un répertoire dans le container (en remplaçant l'existant si deja présent).

Du coup le container va écrire sur le répertoire de l'hote et ça devient persistant. Attention par contre aux droits, users ... entre les users de l'hote et ceux du container (par defaut root:root), peut etre a adapter. Autres soucis possible l'accès réseau (eventuellement besoin de --network host), les ressources demandant des privileges (accès root hote port 80 par ex) ... ça peut contraindre.

Attention aussi aux différentes images que tu vas déployer, bien que "dockerisées" elles sont buildées pour une architecture cible: x86, arm ... Il faut donc utiliser l'image prévue pour sa machine cible, au besoin la rebuilder (retrouver le DockerFile mais pas toujours trivial).

Re: Domoticz et Docker

Publié : 29 juil. 2018, 17:57
par rimram31
La commande que j'utilise pour lancer, la première fois, domoticz:

Code : Tout sélectionner

docker run -d --restart unless-stopped --net=host -v /home/.../domoticz/config:/config -e PGID=100 -e PUID=1000  -e TZ=Europe/Paris linuxserver/domoticz
J'ai créé un répertoire config sous mon HOME, /home/... c'est celui qui est monté avec le container. De mémoire, il me semble qu'au tout début, j'ai fait une copie a partir du contenu du répertoire config du container (voir docker cp).

La -d lance en daemon, le unless-stopped rend le programme permanent même au reboot machine (dans la mesure ou docker redémarre), le seul moyen de l'arrêter est de le faire explicitement. Le --net=host permet de passer outre certains problèmes de composants domoticz qui utiliseraient le réseau (du coup c'est pas aussi bien cloisonné qu'en théorie). Les PUID/PGUID sont les droits users pour l'exécution du container (ça permet surtout de manipuler les fichiers sur le host, sinon ils sont en root:root par défaut). Ca a du me demander un chown lors de la création du fichier config au début.

Une fois ton container démarré, tu peux lancer un shell en interactif =>

Code : Tout sélectionner

docker exec -it <container id> /bin/bash
.

Conseil, lors des mises au point, ne pas exécuter en daemon pour avoir les logs en console en direct, une fois tout ok, rajouter alors le -d.

Re: Domoticz et Docker

Publié : 30 juil. 2018, 17:27
par Sopalin
rimram31 a écrit :La commande que j'utilise pour lancer, la première fois, domoticz:

Code : Tout sélectionner

docker run -d --restart unless-stopped --net=host -v /home/.../domoticz/config:/config -e PGID=100 -e PUID=1000  -e TZ=Europe/Paris linuxserver/domoticz
J'ai créé un répertoire config sous mon HOME, /home/... c'est celui qui est monté avec le container. De mémoire, il me semble qu'au tout début, j'ai fait une copie a partir du contenu du répertoire config du container (voir docker cp).

La -d lance en daemon, le unless-stopped rend le programme permanent même au reboot machine (dans la mesure ou docker redémarre), le seul moyen de l'arrêter est de le faire explicitement. Le --net=host permet de passer outre certains problèmes de composants domoticz qui utiliseraient le réseau (du coup c'est pas aussi bien cloisonné qu'en théorie). Les PUID/PGUID sont les droits users pour l'exécution du container (ça permet surtout de manipuler les fichiers sur le host, sinon ils sont en root:root par défaut). Ca a du me demander un chown lors de la création du fichier config au début.

Une fois ton container démarré, tu peux lancer un shell en interactif =>

Code : Tout sélectionner

docker exec -it <container id> /bin/bash
.

Conseil, lors des mises au point, ne pas exécuter en daemon pour avoir les logs en console en direct, une fois tout ok, rajouter alors le -d.
Merci de tes précisions et aide sur les commandes. Ma question principale se porte sur la DB intégré à domoticz. J'ai un fichier domoticz.db à la racine du dossier domoticz et non dans le /Config, du coup je me demandais en cas de crash du conteneur, je perds la DB et donc la configuration et l'historisation des données ?

A moins que ce fichier ne serve à autre chose ...

Re: Domoticz et Docker

Publié : 30 juil. 2018, 18:07
par rimram31
Le container linuxserver/domoticz est une version adaptée pour attendre tous les fichiers configurables, Y COMPRIS la db dans le répertoire config. Si je fais un ls dans le container (un container "bidon" que je viens de charger):

Code : Tout sélectionner

$ ls config
domoticz.db  domoticz.db-shm  domoticz.db-wal  keys  plugins  scripts
Tu trouves la db, le répertoire scripts, plugins ... (eux-aussi éventuellement modifiables).

A priori, "de tête", tu dois pouvoir faire un:

Code : Tout sélectionner

docker run linuxserver/domoticz
Puis dans une autre fenêtre, un docker ps pour avoir l'id du container lancé et un:

Code : Tout sélectionner

docker cp <id>:config /truc/machin/.../config
Ca va copier le répertoire tel qu'il est dans le container dans un répertoire local (a ta machine).

Ensuite tu tues ton container initial (double Ctrl C) et tu relances cette fois avec les paramètres que je donne plus haut, -v pour monter le répertoire que tu viens de copier localement qui sera le config dans lequel dz dockerisé stockera ses données et les options groupid id, id pour que tu n'ai pas de soucis de droits users.

Domoticz docker stockera par la suite toutes ces données dans les fichiers locaux, dans le volume donc persistants. Tu pourrais aussi par exemple ajouter des scripts python, lua ... que domoticz verra comme une installation "classique".

Re: Domoticz et Docker

Publié : 02 août 2018, 16:12
par Sopalin
Tout s'explique alors. J'ai bêtement comparé ma config classique en supposant que le conteneur avait la même structure, d'où mon questionnement sur la db.

Je vais faire des tests et voir un peu ce que ça donne. L'image fournis pour domoticz est assez fiable ou il vaut mieux la fabriquer sois-même ?

Re: Domoticz et Docker

Publié : 02 août 2018, 19:42
par rimram31
Sopalin a écrit :... L'image fournis pour domoticz est assez fiable ou il vaut mieux la fabriquer sois-même ?
Aucune idée, j'ai utilisé cette image "telle quelle" mais mon usage est un 2ème dz en "test", je n'ai pas besoin de fiabilité folle.

Après, tu peux reprendre le docker file et l'adapter au besoin: https://github.com/linuxserver/docker-domoticz Du coup, je vois que c'est une alpine a la base, si tu connais le monde docker, alpine c'est + léger mais ça peut être plus compliqué si on installe d'autres choses.

Oops en t'écrivant je vois que tu vas installer sur un pi, il te faut prendre les images arm https://hub.docker.com/r/lsioarmhf/domoticz/ (et Dockerfile pour arm: https://github.com/linuxserver/docker-domoticz-armhf)

Re: Domoticz et Docker

Publié : 22 sept. 2020, 14:52
par ccyril91
Bonjour
je suis en train de me coller à ce sujet : VM -> Docker pour mon Domoticz

Avez vous des trucs & astuces ? Les derniers messages du sujet datent un peu ...

:)