[Résol]Installer Dolibarr dans un container Docker

Bonjour

Suite à de longues recherches pour installer SMI sous ubuntu 16.04 devant tourner sous php 5.6 et mysql 5.6 , Krodelabestiole du forum Ubuntu-fr m’a présenté docker et j’ai donc réussi à y installer SMI , après ce succès j’ai mis à jour la page dédiée à SMI dans la documentation en ligne de Ubuntu, maintenant j’aimerais y installer Dolibarr 5.0.4 mais l’installation bloque au chemin d’accès aux fichiers de Dolibarr dans le container.
Quand je passe à la page suivante je reçois un message d’erreur de la page de dolibarr me disant qu’il ne peut pas accéder aux fichiers PHP de l’application qu’il faut vérifier les chemins.

Failed to include_once("/dolibarr/htdocs/core/db/mysqli.class.php") Vous avez peut-être saisi une mauvaise valeur pour le paramètre 'Répertoire contenant les pages web'. Revenez en arrière et corrigez les paramètres invalides.

Puis un essai avec le chemin absolu ne donne pas plus de résultats.

Failed to include_once("/home/yoritomo/www/dolibarr/htdocs/core/db/mysqli.class.php") Vous avez peut-être saisi une mauvaise valeur pour le paramètre 'Répertoire contenant les pages web'. Revenez en arrière et corrigez les paramètres invalides.

Alors pour donner des précisions, SMI qui fonctionne déjà bien est installé dans /home/yoritomo/www/smi/ j’ai donc créé un répertoire dollibarr dans www pour faire de même mais sans succès, je ne sais pas quel chemin je dois utiliser, Docker est encore nouveau pour moi.

J’ai renseigné « db » comme base de données avec « root » comme login et mot de passe comme je l’ai fait pour SMI, la base dolibarr est créée, j’y ai importé ma sauvegarde de base existante.

Quelqu’un peut il m’aider ? Je sais qu’il existe un container préconfiguré pour Dolibarr, mais comme j’ai déjà un serveur fonctionnel sous docker pour SMI donc ce serait plus propre de tout assembler.

Une indication supplémentaire est que suis bien obligé d’utiliser Dolibarr dans docker parce que le serveur php de docker et celui natif de ubuntu ne peuvent pas tourner en même temps, c’est d’ailleurs très embêtant.

Merci d’avance.

Bonjour,
Je m’intéresse à Docker depuis peu, mais j’ai cru comprendre que son grand intérêt est de pouvoir séparer chaque applicatif dans un environnement distinct, ce qui permet les mises à jour et les ajouts/suppressions de composants de manière extrêmement simple.
Je pense donc que vous pouvez installer tranquillement Dolibar dans son propre container Docker, à côté de celui qui contient SMI, et les deux cohabiterons extrêmement bien.
Je suis très intéressé par vos recherches, car de mon côté j’utilise au quotidien GLPI et Dolibarr, et je pense les migrer sous Docker prochainement.
Cordialement

Comme pour toute installation de Dolibarr, il faut que les fichiers soient accessible en lecture à l’utilisateur www-data, et certains répertoires soient accessibles en écriture pour ledit utilisateur.
C’est peut-être ça le problème ?

Bonjour et merci pour votre intervention.

ZenAdm:
J’avais cru comprendre aussi que ce qui se passerait dans le container n’influerait pas sur le fonctionnement d’un serveur externe, et au début j’ai longtemps cherché pourquoi je n’arrivais pas à démarrer le serveur qui se trouve dans le container , j’avais des erreurs me disant que PHP et Mysql étaient déjà en fonction !? C’est seulement en arrêtant php et mysql de Ubuntu que ça a commencé à fonctionner.
Alors oui, je pense que créer un deuxième container est une solution, mais la machine étant plutôt lente au départ je ne sais pas si c’est une bonne idée. Je pense que le problème vient simplement du chemin root du serveur qui est incorrect.

yves57
Oui je suis déjà familier à Dolibarr et suis déjà passé par tous ces problèmes, j’ai donc attribué les droits nécessaires, le soucis est que je n’arrive pas à trouver la syntaxe du chemin du répertoire de Dolibarr, pour qu’il prenne en compte celui vers le répertoire défini pour le container et non le chemin par défaut.

Si vous avez quelques idées à tester je vous en donnerai les résultats.

Merci pour votre aide.

Bonsoir

J’ai pu résoudre ce problème d’installation en installant Dolibarr 6.0.4 sur un autre PC dans les mêmes conditions avec les mêmes containers Docker, j’ai copié le répertoire de ce PC vers le PC problématique, et tout s’est mis à fonctionner, donc maintenant Dolibarr est opérationnel , mais ça aurait été trop beau un autres problème survient …

J’ai maintenant une multitude de warnings qui poluent toutes les pages:

Warning: getdate(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/html/dolibarr/htdocs/core/lib/functions.lib.php on line 1702
Alors bien sure avant de poster ici j’ai fait mes recherches et j’ai rapidement découvert qu’il s’agit d’un défaut de fuseaux horaires dans les containers dockers, jai donc essayé une multitude de solutions proposées mais sans trouver le moyen de faire accepter le fuseau horaire au PHP du container Docker.

Donc voici à quoi ressemble actuellement mon docker-compose.yml, comment est ce que je devrais le modifier ?

[code]
version: ‹ 2 ›

services:
web:
image: lavoweb/php-5.6

    ports:
        - "80:80"
    volumes:
        - ~/www:/var/www/html            
        - "/etc/timezone:/etc/timezone:ro"
        - "/etc/localtime:/etc/localtime:ro"
        
    links:
        - db:db
    
  
db:
    image: mysql:5.5
    volumes:
        - ~/mysql:/var/lib/mysql
    ports:
        - "3306:3306"
    environment:
        - MYSQL_ROOT_PASSWORD=root
        
myadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - "8080:80"
    links:
        - db:db[/code]

Merci pour votre aide et bonne soirée.

Bonsoir à tous

Comme d’habitude je partage le résultat de mes recherches, après de nombreux essais, je n’avais pas trouvé de posts qui apportent une réelle solution dans mon problème de fuseaux horaires dans le container Docker.
Sur le forum officiel de Docker, quelqu’un a pu me répondre avec précision , et la solution est simple, la voici donc:

Le principe est de créer un fichier timezone.ini dans le même répertoire que le fichier docker-compose.yml contenant la ligne de commande de la timezone et d’en inclure la déclaration dans le fichier docker-compose.yml.

Pour cela créer un fichier timezone.ini et y mettre juste ceci :

date.timezone=Europe/Paris

Insérer cette ligne dans le fichier docker-compose.yml pour déclarer la présence du fichier .ini :

volumes: - ~/www:/var/www/html - "./timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"

Ne pas oublier d’arrêter le container docker et le relancer et ça fonctionne !

Merci à Emilyshepherd du forum Docker pour son excellente solution.

Bonne soirée à tous.

Bonjour,

J’essaie de faire tourner dolibarr V8 sous docker, j’utilise le docker-compose.yml dans build/docker.

je suis sous windows 10 pro 64bit.

Après m’être bagarré avec la commande export HOST_USER_ID=$(id -u) afin de loader l’id du current user dans la variable d’environnement. Sous windows on fait ça dans les options avancés du système.
(Sauf que je ne sais pas comment récupéré l’ID du current user sous windows. Je sais récupérer le %USERNAME% bref ceci me créé une erreur invalide usermod et groupmod dans le container « web »).
Bref j’ai modifié en ajoutant le user et mot de passe dans le fichier.

Je lance docker-compose up, tout se lance j’ai mes conteneurs mariadb, web et phpmyadmin qui se créés j’arrive sur http://localhost sauf qu’il m’est impossible d’avancer dans l’installation de dolibarr. A priori mysqli n’est pas reconnu ou pas installé correctement.

Même histoire sous phpmyadmin

je pense donc que mysqli n’est pas correctement installé par l’instruction :

dans le dockerfile pour l’image php-apache…

du coup ça marche à moitié… si quelqu’un a déjà rencontré se soucis et qu’il sait comment le résoudre je suis là :whistle:

Bonsoir,
@MkLHX, as-tu trouvé la solution à ce problème ? Je rencontre le même.
Je suis encore débutant à utiliser Docker, mais j’ai l’impression qu’on serait dans un de ces trois cas :

  • le connecteur MySQL est mal installé, là il faut voir du côté du Dockerfile
  • il y a un problème de communication avec la base, là il faut voir du côté du docker-compose.yml
  • il faudrait utiliser mysql au lieu de mariadb ?

Pour le premier cas, j’utilise https://hub.docker.com/r/monogramm/docker-dolibarr en version Apache et PHP 7.1. Je testerai un autre jour de recompiler l’image.
Pour le problème de communication avec la base, cela me semble bizarre car mon Docker Adminer, dans le même docker-compose.yml, fonctionne bien
Pour MySQL à la place de MariaDB, je ne pense pas mais bon…

Si jamais tu as déjà la solution, je suis preneur :happy:

J’ai changé d’image, j’ai réussi à faire fonctionner celle de tuxgasy sans problème (en version PHP 7.0) : https://hub.docker.com/r/tuxgasy/dolibarr
Comme je n’ai fait que très peu de modifications dans mon docker-compose.yml, je suppose que c’est l’image de monogramm qui pose soucis (comme l’indique le rapport de build, mais je n’y avais pas fait attention : https://hub.docker.com/r/monogramm/docker-dolibarr/builds)

Bonjour,

Aujourd’hui je me dis tiens et si je testais la derniere version de dolibarr 9.0 et bien toujours le même soucis sous docker…

tous les containers sont lancés
mariadb tourne j’arrive à accéder au localhost:3306
apache fonctionne car j’ai accès au setup initial
mais j’ai toujours l’erreur de connexion à la db…

voici les logs du docker-compose up

mariadb_1 | 2019-05-15 11:07:40 0 [Note] mysqld (mysqld 10.3.9-MariaDB-1:10.3.9+maria~bionic) starting as process 1 …
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Using Linux native AIO
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Uses event mutexes
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Number of pools: 1
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Using SSE2 crc32 instructions
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: Completed initialization of buffer pool
mariadb_1 | 2019-05-15 11:07:40 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: Creating shared tablespace for temporary tables
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: Setting file ‹ ./ibtmp1 › size to 12 MB. Physically writing the file full; Please wait …
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: File ‹ ./ibtmp1 › size is now 12 MB.
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: 10.3.9 started; log sequence number 1630941; transaction id 21
mariadb_1 | 2019-05-15 11:07:42 0 [Note] Plugin ‹ FEEDBACK › is disabled.
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
mariadb_1 | 2019-05-15 11:07:42 0 [Note] Server socket created on IP: ‹ :: ›.
mariadb_1 | 2019-05-15 11:07:42 0 [Warning] ‹ proxies_priv › entry ‹ @% root@04ee3e660fd8 › ignored in --skip-name-resolve mode.
mariadb_1 | 2019-05-15 11:07:42 0 [Note] InnoDB: Buffer pool(s) load completed at 190515 11:07:42
mariadb_1 | 2019-05-15 11:07:42 0 [Note] Reading of all Master_info entries succeded
mariadb_1 | 2019-05-15 11:07:42 0 [Note] Added new Master_info ‹  › to hash table
mariadb_1 | 2019-05-15 11:07:42 0 [Note] mysqld: ready for connections.
mariadb_1 | Version: ‹ 10.3.9-MariaDB-1:10.3.9+maria~bionic › socket: ‹ /var/run/mysqld/mysqld.sock › port: 3306 mariadb.org binary distribution

web_1 | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.17.0.3. Set the ‹ ServerName › directive globally to suppress this message
web_1 | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.17.0.3. Set the ‹ ServerName › directive globally to suppress this message
web_1 | [Wed May 15 11:07:47.052751 2019] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.0.31 configured -- resuming normal operations
web_1 | [Wed May 15 11:07:47.053441 2019] [core:notice] [pid 1] AH00094: Command line: ‹ apache2 -D FOREGROUND ›

bref je vais chercher encore un peu mais je ne vais pas y passer trop de temps

Bonjour à tous,

Je me permets de déterrer cette conversation, car je n’ai pas trouvé d’autres publications sur ce forum relative à Docker.

Souhaitant utiliser uniquement des images de base disponibles sur le docker hub pour découvrir l’environnement Dolibarr, j’ai eu la même erreur de connexion à la base de données.

Après avoir testé plusieurs configurations, j’ai indiqué db (le nom de mon service dans mon docker-compose.yml) au lieu de localhost ou 127.0.0.1 dans le nom d’hôte de la base de données et cela a fonctionné.

Dockerfile :

FROM php:7.1-apache
RUN apt-get update
RUN apt-get install -y cron g++ gettext libicu-dev openssl libc-client-dev libkrb5-dev libxml2-dev libfreetype6-dev libgd-dev libmcrypt-dev bzip2 libbz2-dev libtidy-dev libcurl4-openssl-dev libz-dev libmemcached-dev libxslt-dev

RUN docker-php-ext-configure gd --with-freetype-dir=/usr --with-jpeg-dir=/usr
RUN docker-php-ext-install gd
RUN docker-php-ext-install mysqli

ADD ./php.ini /usr/local/etc/php/conf.d/app.ini

EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

docker-compose.yml :

web:
    build: ./conf/php
    ports:
        - "80:80"
    volumes:
        - ./conf/apache2/sites-available:/etc/apache2/sites-available
        - ./www:/var/www/html
    links:
        - db:db

db:
    image: mysql:5.5
    restart: always
    ports:
        - "3306:3306"
    volumes:
        - ./mysql:/var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: dolibarr

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - "8080:80"
    links:
        - db:db