Laurent Destailleur ec8f09cf4a More complete README
2024-08-16 18:56:29 +02:00
2024-08-15 08:16:41 +02:00
2024-08-15 16:20:08 +02:00
2021-11-04 22:11:01 +01:00
2024-08-15 08:16:41 +02:00
2024-05-18 03:30:01 +02:00
2020-05-02 17:15:02 +02:00
2024-08-16 18:56:29 +02:00
2024-08-16 18:56:29 +02:00
2023-05-13 10:30:41 +02:00
2024-08-15 08:16:41 +02:00
2024-05-11 14:25:36 +02:00

Dolibarr on Docker

Docker image for Dolibarr ERP & CRM Open source web suite.

Dolibarr is a modern software package to manage your organization's activity (contacts, quotes, invoices, orders, stocks, agenda, hr, expense reports, accountancy, ecm, manufacturing, ...).

More information

Supported tags

  • 15.0.3-php7.4 15.0.3 15
  • 16.0.5-php8.1 16.0.5 16
  • 17.0.4-php8.1 17.0.4 17
  • 18.0.5-php8.1 18.0.5 18
  • 19.0.2-php8.2 19.0.2 19 latest
  • develop

End of support for PHP < 7.4

Dolibarr versions 14 and lower are no more updated

Supported architectures

Linux x86-64 (amd64), ARMv7 32-bit (arm32v7 ⚠️ MariaDB/Mysql docker images don't support it) and ARMv8 64-bit (arm64v8)

How to run this image ?

This image is based on the official PHP repository and the official Dolibarr repository but doesn't contains database. So you need to link it with a database container.

Let's use Docker Compose to integrate it with MariaDB (you can also use MySQL if you prefer):

If you want to have a persistent database and dolibarr data files after reboot or upgrade, you must first create a directory /home/mariadb_data, /home/dolibarr_data and /home/dolibarr_custom on you host to store persistent files.

mkdir /home/mariadb_data /home/dolibarr_data /home/dolibarr_custom;

Then, create a docker-compose.yml file as following:

services:
    mariadb:
        image: mariadb:latest
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: dolibarr
        volumes:
            - mariadb_data:/var/lib/mysql

    web:
        image: dolibarr/dolibarr:latest
        environment:
            DOLI_DB_HOST: mariadb
            DOLI_DB_USER: root
            DOLI_DB_PASSWORD: root
            DOLI_DB_NAME: dolibarr
            DOLI_URL_ROOT: 'http://0.0.0.0'
            DOLI_ADMIN_LOGIN: 'admin'
            DOLI_ADMIN_PASSWORD: 'admin'
            PHP_INI_DATE_TIMEZONE: 'Europe/Paris'
        ports:
            - "80:80"
        links:
            - mariadb
        volumes:
            - dolibarr_data:/var/www/documents
            - dolibarr_custom:/var/www/html/custom
            
volumes:
    mariadb_data:
        driver: local # Define the driver and options under the volume name
        driver_opts:
            type: none
            device: /home/mariadb_data
            o: bind
    dolibarr_data:
        driver: local # Define the driver and options under the volume name
        driver_opts:
            type: none
            device: /home/dolibarr_data
            o: bind            
    dolibarr_custom:
        driver: local # Define the driver and options under the volume name
        driver_opts:
            type: none
            device: /home/dolibarr_custom
            o: bind            

Then build and run all services (-d is to run in background) sudo docker-compose up -d

You can check the web and the mariadb containers are up and see logs with sudo docker-compose ps sudo docker-compose logs

Once the log shows that the start is complete, go to http://0.0.0.0 to access to the new Dolibarr installation, first admin login is admin/admin.

Note: If the host port 80 is already used, you can replace "80:80" with "xx:80" where xx a free port on the host. You will be able to access the Dolibarr using the URL http://0.0.0.0:xx

Other examples:

You can find several examples in the examples directory, such as:

Upgrading Dolibarr version and migrating DB

Warning: Only data stored into persistent directories will not be lost after an upgrade of containers.

Remove the install.lock file. The install.lock file is located inside the container volume /var/www/documents. sudo docker exec nameofwebcontainer bash -c "rm -f /var/www/documents/install.lock" of sudo docker exec -it nameofwebcontainer bash rm -f /var/www/documents/install.lock; exit

Then start an updated version container. sudo docker-compose pull sudo docker-compose up -d sudo docker-compose logs

Ensure that env DOLI_INSTALL_AUTO is set to 1 so it will migrate Database to the new version. You can still use the standard way to upgrade through web interface.

Early support for PostgreSQL

Setting DOLI_DB_TYPE to pgsql enable Dolibarr to run with a PostgreSQL database. When set to use pgsql, Dolibarr must be installed manually on it's first execution:

  • Browse to http://0.0.0.0/install;
  • Follow the installation setup;
  • Add install.lock inside the container volume /var/www/html/documents (ex docker-compose exec services-data_dolibarr_1 /bin/bash -c "touch /var/www/html/documents/install.lock").

When setup this way, to upgrade version the use of the web interface is mandatory:

  • Remove the install.lock file (ex docker-compose exec services-data_dolibarr_1 /bin/bash -c "rm -f /var/www/html/documents/install.lock").
  • Browse to http://0.0.0.0/install;
  • Upgrade DB;
  • Add install.lock inside the container volume /var/www/html/documents (ex docker-compose exec services-data_dolibarr_1 /bin/bash -c "touch /var/www/html/documents/install.lock").

Environment variables summary

You can use the following variables for a better customization of your docker-compose file.

Variable Default value Description
DOLI_INSTALL_AUTO 1 1: The installation will be executed on first boot
DOLI_PROD 1 1: Dolibarr will be run in production mode
DOLI_DB_TYPE mysqli Type of the DB server (mysqli, pgsql)
DOLI_DB_HOST mysql Host name of the MariaDB/MySQL server
DOLI_DB_HOST_PORT 3306 Host port of the MariaDB/MySQL server
DOLI_DB_USER doli Database user
DOLI_DB_PASSWORD doli_pass Database user's password
DOLI_DB_NAME dolidb Database name
DOLI_ADMIN_LOGIN admin Admin's login create on the first boot
DOLI_ADMIN_PASSWORD admin Admin'password
DOLI_URL_ROOT http://localhost Url root of the Dolibarr installation
DOLI_ENABLE_MODULES Comma-separated list of modules to be activated at install. modUser will always be activated. (Ex: Societe,Facture,Stock)
DOLI_COMPANY_NAME Set the company name of Dolibarr at container init
DOLI_COMPANY_COUNTRYCODE Set the company and Dolibarr country at container init. Need 2-letter codes like "FR", "GB", "US",...
PHP_INI_DATE_TIMEZONE UTC Default timezone on PHP
PHP_INI_MEMORY_LIMIT 256M PHP Memory limit
PHP_INI_UPLOAD_MAX_FILESIZE 2M PHP Maximum allowed size for uploaded files
PHP_INI_POST_MAX_SIZE 8M PHP Maximum size of POST data that PHP will accept.
PHP_INI_ALLOW_URL_FOPEN 0 Allow URL-aware fopen wrappers
WWW_USER_ID ID of user www-data. ID will not changed if leave empty. During a development, it is very practical to put the same ID as the host user.
WWW_GROUP_ID ID of group www-data. ID will not changed if leave empty.
DOLI_AUTH dolibarr Which method is used to connect users, change to ldap or ldap, dolibarr to use LDAP
DOLI_LDAP_HOST 127.0.0.1 The host of the LDAP server
DOLI_LDAP_PORT 389 The port of the LDAP server
DOLI_LDAP_VERSION 3 The version of LDAP to use
DOLI_LDAP_SERVER_TYPE openldap The type of LDAP server (openLDAP, Active Directory, eGroupWare)
DOLI_LDAP_LOGIN_ATTRIBUTE uid The attribute used to bind users
DOLI_LDAP_DN ou=users,dc=my-domain,dc=com The base where to look for users
DOLI_LDAP_FILTER The filter to authorise users to connect
DOLI_LDAP_BIND_DN The complete DN of the user with read access on users
DOLI_LDAP_BIND_PASS The password of the bind user
DOLI_LDAP_DEBUG false Activate debug mode
DOLI_CRON 0 1: Enable cron service
DOLI_CRON_KEY Security key launch cron jobs
DOLI_CRON_USER Dolibarr user used for cron jobs
DOLI_INSTANCE_UNIQUE_ID Secret ID used as a salt / key for some encryption. By default, it is set randomly when the docker container is created.

Some environment variables are compatible with docker secrets behaviour, just add the _FILE suffix to var name and point the value file to read. Environment variables that are compatible with docker secrets:

  • DOLI_DB_USER => DOLI_DB_USER_FILE
  • DOLI_DB_PASSWORD => DOLI_DB_PASSWORD_FILE
  • DOLI_ADMIN_LOGIN => DOLI_ADMIN_LOGIN_FILE
  • DOLI_ADMIN_PASSWORD => DOLI_ADMIN_PASSWORD_FILE
  • DOLI_CRON_KEY => DOLI_CRON_KEY_FILE
  • DOLI_CRON_USER => DOLI_CRON_USER_FILE
  • DOLI_INSTANCE_UNIQUE_ID => DOLI_INSTANCE_UNIQUE_ID_FILE

Add post-deployment and before starting scripts

It is possible to execute *.sh, *.sql and/or *.php custom file at the end of deployment or before starting Apache by mounting volumes. For scripts executed during deployment mount volume in /var/www/scripts/docker-init.d. For scripts executed before Apache stating mount volume in /var/www/scripts/before-starting.d.

\docker-init.d
|- custom_script.sql
|- custom_script.php
|- custom_script.sh

Mount the volumes with compose file :

services:
    mariadb:
        image: mariadb:latest
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: dolibarr

    web:
        image: dolibarr/dolibarr
        environment:
            DOLI_DB_HOST: mariadb
            DOLI_DB_USER: root
            DOLI_DB_PASSWORD: root
            DOLI_DB_NAME: dolibarr
            DOLI_URL_ROOT: 'http://0.0.0.0'
            PHP_INI_DATE_TIMEZONE: 'Europe/Paris'
        volumes :
          - volume-scripts:/var/www/scripts/docker-init.d
          - before-starting-scripts:/var/www/scripts/before-starting.d
        ports:
            - "80:80"
        links:
            - mariadb
Description
Official Dolibarr docker images. Based on the work of Garcia MICHEL (tuxgasy)
Readme GPL-3.0 815 KiB
Languages
Shell 84.7%
Dockerfile 10%
PHP 5.3%