Création des containers Jeedom

Création des containers Jeedom

Nous allons créer 2 containers, un pour installer Jeedom stable, un autre pour installer Jeedom beta.

La force de docker est de pouvoir partager les données avec l’hôte ce qui nous permettra de partager le répertoire Jeedom du container (i.e. /var/www/html), et ainsi créer un projet Eclipse partageant les fichiers sources avec ceux du container Jeedom.

Nous proposons de stocker ces données dans un répertoire nommée docker du répertoire de l’utilisateur courant:

cd
mkdir docker

Créons le 1er container, pour Jeedom stable:

docker run --name jeedom-stable --privileged -v /home/domotruc/docker/stable-jeedom:/var/www/html -e ROOT_PASSWORD=Mjeedom96 -p 9080:80 -p 9022:22 jeedom/jeedom:master

Bien sûr, remplacer domotruc par votre nom d’utilisateur et le mot de passe root par celui de votre choix.

L’image jeedom/jeedom:master est utilisée car c’est la dernière mise à jour, le vérifier ici.

Le téléchargement de l’image démarre (> 1GB, pour le premier container uniquement).

Nous pouvons également lancer DockStation pour suivre l’installation.

Lorsque le message INFO success: cron entered RUNNING state, Jeedom est opérationnel.

Pour Jeedom beta, la commande est:

docker run --name jeedom-beta --privileged -v /home/domotruc/docker/beta-jeedom:/var/www/html -e ROOT_PASSWORD=Mjeedom96 -p 9180:80 -p 9122:22 jeedom/jeedom:master

Ouverture d’un terminal root dans le container

Dans la suite, nous aurons besoin d’ouvrir un terminal root dans le container. Deux options au choix pour ce faire:

  • Cliquer sur le bouton EXEC dans DockStation.
  • Taper dans une console:
    docker exec -it jeedom-stable bash  # Pour le container jeedom-stable
    docker exec -it jeedom-beta bash    # Pour le container jeedom-beta
    

Installation de l’éditeur nano sur le container

Le container comprend une distribution minimaliste ; seul l’éditeur vi est installé.
Dans la suite nous aurons besoin de modifier des fichiers, je propose d’installer nano qui est très léger, plus naturel et convivial que vi. Ouvrir un terminal sur le container et taper:

apt install nano

Changer l’uid et le gid de l’utilisateur www-data

Le répertoire de partage Jeedom (/home/domotruc/docker/stable-jeedom) appartient à l’utilisateur www-data. Les données ne sont donc pas modifiables par l’utilisateur courant côté hôte.

L’astuce pour les rendre modifiables est de changer uid/gid de l’utilisateur www-data côté container, par ceux de l’utilisateur courant. Voici la procédure:

  1. Taper id dans un terminal sur l’hôte et relever uid et gid.
  2. Ouvrir un terminal root dans le container (procédure ici).
  3. Editer le fichier init.sh:
    nano ~/init.sh
    
  4. Sous la ligne suivante:
    echo "root:${ROOT_PASSWORD}" | chpasswd
    

    Ajouter les lignes:

    usermod -u uid www-data
    groupmod -g gid www-data
    

    uid et gid sont à remplacer par les valeurs préalablement notées.

  5. Arrêter et redémarrer le container. Le répertoire de partage Jeedom devrait maintenant appartenir à l’utilisateur courant côté hôte.

MAJ container pour Jeedom 3.3.x

Jeedom utilise le service atd depuis la version 3.2.16. En attendant que le container soit mise à jour, il est nécessaire d’ajouter le démarrage de ce service au démarrage du container.

  1. Ouvrir un terminal root dans le container (procédure ici).
  2. Editer le fichier init.sh:
    nano ~/init.sh
    
  3. Sous la ligne suivante:
    service ssh restart
    

    Ajouter les lignes:

    echo 'Start atd'
    systemctl restart atd
    service atd restart
    
  4. Arrêter et redémarrer le container.

Installation de xdebug sur le container

Pour pouvoir déboguer Jeedom (plugin et core), il faut installer et configurer xdebug côté container.

  1. Ouvrir un terminal root dans le container (procédure ici), et taper:
    apt install php-xdebug
    
  2. Récupérer l’IP de l’hôte en tapant dans une console sur l’hôte:
    ip addr show docker0
    

    (devrait être 172.17.0.1)

  3. Editer le fichier de configuration xdebug.ini d’Apache:

    nano /etc/php/7.0/apache2/conf.d/20-xdebug.ini
    

    Et le modifier comme suit:

    zend_extension=xdebug.so
    xdebug.remote_enable=On
    # Mettre la bonne IP, devrait être 172.17.0.1
    xdebug.remote_host=172.17.0.1
    xdebug.remote_port=9000
    xdebug.remote_handler="dbgp"
    

    Redémarrer le serveur Apache:

    service apache2 restart
    

    Et vérifier que la commande suivante liste bien Xdebug.

    php -m