Je cherche à migrer mon installation Jeedom d’un Raspberry Pi3B de plus en plus instable (freeze tous les 2 ou 3 jours) vers un Synology DS423+.
J’ai essayé les différents tuto macvlan de Didier3L (pour utilisation du plugin Xiaomi notamment), en vain, je rencontre systématiquement des erreurs. Très certainement de mon fait, étant novice en utilisation de Docker.
Ayant vu que @Loic avait mis à jour très récemment la documentation officielle pour installation Synology, j’ai décidé de l’utiliser en prenant l’option Docker-Compose qui me permet de déclarer mes périphériques USB. J’ai également ajouté un mapping des volumes et l’utilisation de l’image 4.3-buster (également testé avec 4.4-buster).
Au lancement du Docker-Compose, l’installation MariaDB se met en erreur avec le message ci-dessous :
Installing MariaDB/MySQL system tables in '/var/lib/mysql/' ...
Installation of system tables failed! Examine the logs in
/var/log/mysql/error.log or /var/lib/mysql/ for more information.
The problem could be conflicting information in an external
my.cnf files. You can ignore these by doing:
shell> /usr/bin/mysql_install_db --defaults-file=~/.my.cnf
You can also try to start the mysqld daemon with:
shell> /usr//sbin/mysqld --skip-grant-tables --general-log &
and use the command line tool /usr//bin/mysql
to connect to the mysql database and look at the grant tables:
shell> /usr//bin/mysql -u root mysql
mysql> show tables;
Try 'mysqld --help' if you have problems with paths. Using
--general-log gives you a log in /var/lib/mysql/ that may be helpful.
The latest information about mysql_install_db is available at
https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
You can find the latest source at https://downloads.mariadb.org and
the maria-discuss email list at https://launchpad.net/~maria-discuss
Please check all of the above before submitting a bug report
at http://mariadb.org/jira
Stopping MariaDB database server: mysqld.
Starting MariaDB database server: mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . failed!
mariadb: unrecognized service
J’ai vérifié les droits des répertoires « db » & « html » et ils semblent OK, je n’arrive pas à comprendre d’où vient cette erreur (qui du coup bloque l’installation de Jeedom).
Auriez-vous une idée ?
Merci d’avance !
héhé, c’est une bonne idée prochaine étape, sortir le cron dans un container scheduler externe, j’utilise chadburn qui se configure simplement, puis ensuite le container jeedom devient un simple serveur apache + php, une image officielle stable existe pour cela.
Ensuite il faut placer les démons des plugins dans des containers séparés également, pour aller au bout du concept…
C’est possible d’appeler un cli dans un container depuis l’extérieur, et donc aussi depuis un autre docker, il suffit de partager la socket docker avec le container qui fait office de ‹ cron › (comme un volume -v /var/run/docker.sock:/var/run/docker.sock) c’est ce que j’ai fait et qui marche.
Ensuite il suffit de mettre des labels sur le container sur lequel tu veux exécuter le cron, par exemple pour jeedom j’ai mis juste ça en plus dans le docker-compose
labels:
# label chadburn for the "cron" container
chadburn.enabled: "true"
chadburn.job-exec.jeedom-cron.schedule: "@every 1m"
chadburn.job-exec.jeedom-cron.command: "/usr/local/bin/php /var/www/html/core/php/jeeCron.php >> /var/www/html/log/cron.log 2>&1"
Oui, l’intérêt c’est de rapprocher Jeedom d’une « simple » image apache+php qui est une image officielle, maintenue par la communauté.
Aujourd’hui l’image est une debian sur laquelle on ajoute tout un tas de packages (dont php apache et bien d’autre) mais on pourrait utiliser celle de php+apache qui permet d’ajouter les extensions spécifiques à php dont on a besoin.
J’ai essayé de le faire sur mon exemple https://github.com/pifou25/docker-jeedom/blob/master/build/Dockerfile mais pour l’instant j’en suis loin.
Après quelques occupations, je prends le temps de relancer mon projet de migration de Jeedom d’un Raspberry vers un container sur Synology.
@Loic : J’ai utilisé la conf que tu as partagé et l’ai modifié, de façon expérimentale à partir du tuto de @Didier3L, pour y ajouter le support des ports USB et un réseau macvlan (pour plugin Xiaomi).
Je me prends une erreur d’accès SQL à l’étape d’installation de Jeedom :
« Installation of Jeedom
Installating database…ERROR SQLSTATE[HY000] [2002] Connection refused »
Je colle ci-dessous mon docker-compose, si l’un de vous a une idée de l’erreur que je fais avec celui-ci :
Peux-tu vérifier dans le conteneur http (celui dont l’image est jeedom) si le fichier de config db est bien configuré (qu’il n’ait pas localhost comme lien pour la db): une commande de ce style si jamais, dans l’host
sudo docker compose exec http cat core/config/common.config.php
C’est ce fichier et tu dois avoir ‹ host › => ‹ db › car db est le nom du service mariadb dans ton yaml. Si ça c’est bon, port=3306, user et database = jeedom, password = MDP2 … tout va bien du côté jeedom.
Ensuilte on pourra vérifier que côté db il autorise bien les connexions extérieures, tu peux te connecter sur mariadb avec, par exemple un phpmyadmin ou adminer ? Tu peux par exemple ajouter un service adminer dans le docker-compose.yaml :
Merci pour ta réponse !
J’ai ajouté adminer (et les options de logging dans tous les services ) et relancé le docker-compose (après avoir bien nettoyé les précédentes installations).
Je te confirme que le fichier common.config.php de Jeedom est OK.
J’ai bien host = db, port = 3306, user et database = jeedom, password = MDP2.
Le problème pourrait donc venir de la db ? (le dossier db est vide, je ne sais pas si c’est normal)
Aurais-tu une idée de ce que je pourrais tester en suivant pour résoudre mon soucis ?
Je me demande si cela ne vient pas du fait les containers soient sur un réseau macvlan…
PS : désolé si je patauge un peu, mais je ne suis pas du tout informaticien, je fais de l’empirique en me baladant sur des sites et forums à chaque nouvelle étape (création de container, utilisation d’adminer…)