Docker (Dolibarr, MariaDB, PHP)

Bonjour,

Je souhaite dockeriser Dolibarr (+mariadb +php7.1) pour installation sur un NAS OpenMediaVault (Debian).

Je pars de zéro ou presque, toutes mes excuses si je raconte des âneries :confused:
Autant pour l’installation de Dolibarr que pour l’utilisation des dockers : je patauge.

J’ai généré mes fichiers Dockerfile et docker-compose.yml à partir d’informations glanées chez Monogramm et Tuxgasy. J’ai pris un peu des deux car j’ai le sentiment qu’ils sont incomplets ?

Quand je lance « docker-compose up -d », aucun message d’erreur ne remonte et tout semble bien se passer.
Les images sont générées, les containers sont up, l’accès au serveur Apache est possible mais il renvoie une erreur 403.

Logique puisque les répertoires de Dolibarr (var/www/*) sont vides !
Je ne pense pas que ce soit un problème de droits, car l’user www-data est bien en rwx sur l’ensemble de ces répertoires et que les sous-répertoires ont bien été crées par un .sh lancé via Dockerfile.

/www# ls -al
total 3
drwxrwsrwx 5 www-data www-data 5 Jan 4 22:14 .
drwxr-sr-x 4 www-data users 4 Jan 4 20:54 …
drwxr-sr-x 2 www-data www-data 3 Jan 4 22:14 documents
drwxr-sr-x 2 www-data www-data 2 Jan 4 22:14 html
drwxr-sr-x 2 www-data www-data 2 Jan 4 22:14 scripts

La commande docker-compose n’étant pas très ‹ verbose ›, j’ai tenté un petit « docker build » pour voir si des erreurs remontent lors du téléchargement de Dolibarr, de la décompression du zip puis de la copie des fichiers.

Et là :

Step 17/23 : ADD https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.zip /tmp/dolibarr.zip
Downloading 61.83MB
—> 2664322be34b
Le zip semble avoir été téléchargé, mais il n’y a rien dans tmp/

Step 18/23 : RUN unzip -q /tmp/dolibarr.zip -d /tmp/dolibarr
—> Running in 726eba97ba2e
Removing intermediate container 726eba97ba2e
—> fc7e2ceea30b
De même après cette étape, aucun répertoire dolibarr n’est créé dans tmp/

Savez-vous m’aiguiller pour la suite de ce debug ? Parce que là, je sèche.

Merci :slight_smile:
Olivier

Je ne regardais pas dans le bon tmp/ …

Le fichier est bien téléchargé, mais il est placé ailleurs :

[email protected]:/# find / -name « dolibarr.zip »
/var/lib/docker/overlay2/318b314014e5a57220d75d511d8d46866180674b52f3563e24fbea239565c022/diff/tmp/dolibarr.zip

Le problème est donc ailleurs.

Hello Oliv59
Pourquoi ré-inventer la roue?
Il y a déjà une version docker de dolibar qui fonctionne fort bien
https://hub.docker.com/r/tuxgasy/dolibarr/

Bonjour,

Sinon il y a un début de réponse sur le GIT de Doli : https://github.com/Dolibarr/dolibarr/tree/develop/build/docker

Bonjour @radeff,

Avec une installation sur docker est il possible d’utiliser wachtower pour les mises à jour?

Hello radeff,

Je ne réinvente pas la roue, je complète le docker-compose.yml de tuxgasy qui est bien trop succinct à mon gout :

  • ajout de la version docker
  • ajout de la dépendance avec mariadb
  • translation de port
  • ajout de volumes pour avoir persistance de données si arrêt du docker

Sinon, j’utilise le Dockerfile et le docker-run.sh de Tuxgasy

Je n’avance pas depuis 15 jours :frowning:
Le volume créé pour mariadb est bien peuplé de fichiers après la construction de l’image puis lancement du docker.
Alors que les volumes de Dolibarr restent désespérément vides.

Je n’ai pas de message d’erreur quand je lance « docker-compose up » : le process se déroule jusqu’au bout, les images sont crées, les dockers sont lancés.
Comment savoir où ça dysfonctionne ?

Ok, j’avance un peu, merci la commande « docker-compose logs ».

dolibarr | /usr/local/bin/docker-run.sh: line 20: /var/www/html/conf/conf.php: No such file or directory

A la ligne 20 du fichier docker-run.sh, j’ai ceci :

19 : if [ ! -f /var/www/html/conf/conf.php ]; then
20 : 	cat <<EOF > /var/www/html/conf/conf.php

Pensant à un problème de droits d’accès, j’ai lancé la commande suivante depuis mon compte root :

# cat <<EOF > /www/html/conf/conf.php
 test
 EOF
-bash: /www/html/conf/conf.php: No such file or directory

2 choses posent problème dans cette ligne de commande :

  • le premier « / » avant « www »
  • le fait que le répertoire « conf » n’existe pas

En virant le « / » et en créant le répertoire « conf » avant de lancer la commande, ça fonctionne.

Je doute être le premier à utiliser le docker de tuxgasy sous Debian, si ce problème était courant, j’imagine qu’il aurait déjà été corrigé.
Est-ce ma commande « cat » qui est bancale ?

Sinon il y a ça aussi : https://github.com/Monogramm/docker-dolibarr

J’avais testé Monogramm brièvement : pas mieux.

Nan mais je n’avais plus les idées claires hier soir, si le cat ne marche pas c’est pas qu’il a un problème.
C’est que l’extract et la copie de fichiers (lancée par le Dockerfile) vers les répertoires de Dolibarr ne se fait pas.

Je suis revenu à une configuration plus basique : ce que j’aurais dû faire bien avant.

Vu que c’est ce qui semble poser problème, j’ai supprimé la déclaration de volumes pour Dolibarr dans mon docker-compose.yml
Et … ça fonctionne !
Dolibarr est accessible, je peux m’y connecter et constater qu’il s’agit de la version 9.0.4 alors qu’il est censé être en 10.0.3 :thinking:
Bon, je verrai ce problème plus tard.

Ma priorité est de faire marcher les volumes afin d’avoir la persistance des données de Dolibarr.
Déclaration des volumes dans docker-compose.yml

 volumes:
      - /xxx/Dolibarr/www/html:/var/www/html
      - /xxx/Dolibarr/www/documents:/var/www/documents
      - /xxx/Dolibarr/www/scripts:/var/www/scripts

Est-ce ok ?

Est-ce qu’il s’agit d’un problème de droits d’accès ?

Depuis la racine, le chemin d’accès est /xxx/Dolibarr/www
Droits pour le répertoire xxx/
drwxrwxrwx 5 root root 4096 Oct 23 16:37 xxx

Droits pour le répertoire Dolibarr/
drwxr-sr-x 4 www-data www-data 4 Jan 27 22:26 Dolibarr

Droits pour le répertoire www/
drwxr-sr-x 5 www-data www-data 5 Jan 26 23:28 www

Droits des répertoires dans www/
drwxr-sr-x 2 www-data www-data 3 Jan 28 09:16 documents
drwxr-sr-x 2 www-data www-data 2 Jan 26 21:51 html
drwxr-sr-x 2 www-data www-data 2 Jan 26 21:51 scripts

Est-ce que ceci vous semble correct ?
Merci :slight_smile:
Olivier