Erreur installation MariaDB sur Docker Synology

Bonjour,

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 !

Bonjour
Ok je vois d’où ça vient c’est corrigé en 4.4 mais pas en 4.3 il faut prendre la version alpha du docker

1 « J'aime »

Pour info voila la conf que j’utilise chez moi et qui marche (sur syno), peut etre juste les chemin a revoir et bien sur la partie mot de passe :

services:
  db:
    image: mariadb:latest
    command: 
      - "--default-authentication-plugin=mysql_native_password"
      - "--skip-name-resolve"
      - "--key_buffer_size=16M"
      - "--thread_cache_size=16"
      - "--tmp_table_size=48M"
      - "--max_heap_table_size=48M"
      - "--query_cache_type=1"
      - "--query_cache_size=32M"
      - "--query_cache_limit=2M"
      - "--query_cache_min_res_unit=3K"
      - "--innodb_flush_method=O_DIRECT"
      - "--innodb_flush_log_at_trx_commit=2"
      - "--innodb_log_file_size=32M"
      - "--innodb_large_prefix=on"
      - "--connect_timeout=600"
      - "--wait_timeout=600"
      - "--interactive_timeout=600"
    volumes:
      - /volume2/docker/jeedom/db:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=TODO
      - MYSQL_DATABASE=jeedom
      - MYSQL_USER=jeedom
      - MYSQL_PASSWORD=TODO
    expose:
      - 3306
  http:
    image: jeedom/jeedom:4.4-http-bookworm
    volumes:
      - /volume2/docker/jeedom/http:/var/www/html
    tmpfs:
      - /tmp/jeedom
    ports:
      - 52080:80
    restart: always
    environment:
      - DB_HOST=db
      - DB_USERNAME=jeedom
      - DB_PASSWORD=TODO
      - DB_NAME=jeedom
    healthcheck:
      test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:80"]
      interval: 30s
      timeout: 10s
      retries: 5
    depends_on:
      - db
2 « J'aime »

Super, merci Loïc, je teste cela dès que possible sur mon NAS !

Bonsoir Loic

On revient un peu comme à l’époque
Un conteneur pour chaque service
Jeedom core et MariaDB

Bonjour
Oui mais cette fois je comprends un peu mieux comment ça marche

Dans dans ton docker-compose il n’y a pas de mappage de port USB

Tu n’utilises pas de clé USB spécifique (zigbee, zwave, etc) ?

Non je n’en utilise pas.

héhé, c’est une bonne idée :slight_smile: 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…

Le cron c’est pas possible il appels des fichiers en cli donc compliqué quand c’est sur un autre docker.

Pour les démons c’est déjà en partie possible chez moi mosquitto est pas sur jeedom tout comme z2m

Du coup c’est pas en jeedom de prod ?
Ou tu as déporté tes clé sur un autre os ?

Si si c’est bien ma prod mais j’ai que du zigbee avec une clef en réseau ip

Virtualhere ?

Non non c’est une clef zigbee avec un esp32 qui discute sur le réseau ip

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"

Ok dans ce cas effectivement par contre y’a un vrai intérêt à faire ça ?

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.