Installer et faire tourner Odoo avec Docker
Les instructions sont valables pour un système d'exploitation Debian mais devraient être valable pour ses dérivatifs comme Ubuntu.
Préparer le système
Créer un nouvel utilisateur
# adduser sysadm
S'assurer que l'utilitaire sudo
est installé.
# apt install sudo
Ajouter le nouvel utilisateur au group sudo
# adduser sysadm sudo
A partir de maintenant toutes les commandes sont exécutées en tant qu'utilisateur sysadm
.
Se délogguer de l'utilisateur root
et se relogguer en tant que sysadm
.
Installer docker
S'assurer que l'utilitaire curl
est installé.
$ sudo apt install curl
Installer Docker
$ curl -sSL https://get.docker.com/ | sudo sh
Installer l'utilitaire docker-compose
.
$ sudo pip3 install docker-compose
Lancer Odoo avec docker
Créer un dossier qui contiendra l'ensemble des configurations.
$ cd $ mkdir service.odoo
Télécharger les configurations :
$ cd $ cd service.odoo $ curl -s "https://wiki.elosys.net/doku.php?do=export_code&id=clientsdoc:odoo_install_and_run_with_docker&codeblock=0" -o odoo.conf $ curl -s "https://wiki.elosys.net/doku.php?do=export_code&id=clientsdoc:odoo_install_and_run_with_docker&codeblock=1" -o docker-compose.yml $ ls docker-compose.yml odoo.conf $
Lancer Odoo pour la première fois:
$ cd $ cd service.odoo $ docker-compose up
Cette commande prendra un peu de temps pour s'achever car les images
odoo et postgresql doivent être téléchargées.
À la fin du téléchargement le terminal devrait présenter un message qui ressemble aux lignes suivantes
odoo | 2022-10-23 14:39:50,882 1 INFO ? odoo: Odoo version 16.0-20221012 odoo | 2022-10-23 14:39:50,882 1 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf odoo | 2022-10-23 14:39:50,883 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/mnt/extra-addons'] odoo | 2022-10-23 14:39:50,883 1 INFO ? odoo: database: odoo@db:default odoo | 2022-10-23 14:39:52,123 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf odoo | 2022-10-23 14:39:53,983 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on 3d9101998095:8069
Odoo ne sera pas encore fonctionnel avant une dernière étape.
Il faudra exécuter une commande supplémentaire pour régler les autorisations d'accès sur les dossiers partagés entre le système d'exploitation hôte et le container docker de l'application Odoo.
$ cd $ cd service.odoo $ docker-compose run -u root --rm --no-deps --entrypoint "bash -c \"chown -R odoo: /var/lib/odoo/ && chown `id -u`:`id -g` -R /mnt/extra-addons\"" odoo $
À partir de maintenant vous pourrez accéder à Odoo en inscrivant sur le navigateur internet l'adresse IP de la machine. http://192.168.0.45 par exemple.
Démarrer et arrêter Odoo
La commande docker-compose up
lance odoo dans docker mais confisque le terminal en émettant le log de l'application.
Si on souhaite arrêter odoo
nous devons soit appuyer Ctrl-C
sur le même terminal où a été éxecuté docker-compose up
soit nous connecter à la machine avec un autre terminal et exécuter la commande suivante:
$ cd $ cd service.odoo $ docker-compose down
Où déposer les modules supplémentaires
La configuration utilisée dans le fichier docker-compose.yml
et odoo.conf
indique que c'est dans le dossier extra-addons
que les modules supplémentaires doivent être déposés.
$ cd $ cd service.odoo $ ls -F data/ extra-addons/ filestore/ docker-compose.yml odoo.conf $ cd extra-addons $ git clone https://github.com/odoo/monmodule.git
A chaque fois qu'un module supplémentaire est ajouté, odoo doit être redémarré. La série de commandes pour arrêter et redémarrer odoo est la suivante
$ cd $ cd service.odoo $ docker-compose down ... ... $ docker-compose up -d
Ici la commande docker-compose up -d
nous permet de lancer odoo sans que le terminal ne soit confisqué.
Les logs peuvent être obtenus avec la commande docker-compose logs –tail=10 -f
.
$ cd $ cd service.odoo $ docker-compose logs --tail=10 -f
Fichiers de configurations
- odoo.conf
[options] addons_path = /mnt/extra-addons data_dir = /var/lib/odoo
- docker-compose.yml
version: "3" services: odoo: image: odoo:16.0 container_name: odoo ports: - 80:8069 environment: DB_ENV_POSTGRES_USER: odoo DB_ENV_POSTGRES_PASSWORD: odoo links: - db:db volumes: - ./extra-addons:/mnt/extra-addons - ./odoo.conf:/etc/odoo/odoo.conf - ./filestore:/var/lib/odoo network_mode: "bridge" db: image: postgres:14.0 container_name: odoo_db hostname: odoo_db environment: POSTGRES_USER: odoo POSTGRES_PASSWORD: odoo POSTGRES_DB: postgres volumes: - ./data:/var/lib/postgresql/data network_mode: "bridge"