Odoo dans des conteneurs Dockers
À Numigi, nous voulons faciliter la vie de nos développeurs, tout en gardant nos environnements Dev, CI et Prod les plus similaires possibles. Docker est la technologie qui relève ce défi et qui devient incontournable dans la communauté.

Même si la technologie Docker est directrice quant à son utilisation, sa mise en place au niveau architectural reste ouverte. L’OCA Sprint, qui se déroulait en Belgique début octobre, était le lieu parfait pour voir ce que faisait la communauté Odoo à ce sujet. En plus d’y avoir des échanges informels, nous avons organisé une discussion dont l'objectif principal était de savoir où chacun en était, passant ainsi en revue les façons d'intégrer Docker dans nos pipelines. Ce fut une discussion ouverte, interactive et passionnante.

Au final, Il est évident que la communauté Odoo a largement adopté Docker. Presque tous ses gros joueurs ont fait le pas et il en ressort trois grandes approches:

  • L’implémentation classique : Odoo/docker

  • Le couteau suisse : Tecnativa/doodba

  • L'approche intermédiaire : Camptocamp/docker-odoo-project

L'implémentation classique : Odoo/docker

Odoo/docker est l’image officielle distribuée par Odoo SA.  Le conteneur vient avec sa version du code et est mis à jour, disons-le, sporadiquement.  L’utilisation de cette image amène à une pipeline très classique de docker. L’image mère contient le “code” nécessaire pour rouler la solution et les images filles embarqueront des spécificités de l'intégrateur, puis celles du client, par exemple.

Cette approche demande des ressources bien au fait de la mise en place d’un pipeline Docker car il est prévisible que beaucoup d’images vont être construites. C’est l’utilisation de référence « by the book » de la technologie.  C’est la même approche que lorsqu'on utilise les images de Nginx, de Python et autres images officielles.  Sa grande faiblesse, c'est qu'elle pousse à avoir une version unique du code Odoo pour l’ensemble des clients. Par conséquent, cela exige la mise en place de tests validant le maintien de toutes les fonctionnalités de chaque client afin de diminuer l’apparition de dysfonctionnements. Notre image, Numigi/odoo-public est basée sur cette approche. 

Le couteau suisse : Technativa / doodba

Doodba est une image docker développée par Tecnativa et dont Jayro est le mainteneur principal.  Elle renferme une série d’outils pour aider au développement — déploiement, mise à jour du code sur les dépôts git, des services tournent sur chaque environnement (dev, test ou prod) et  plus encore.  En ce qui concerne Odoo, c'est une coquille vide puisque vous devez y injecter la version du code que vous souhaitez utiliser.

Je retiens que Doodba semble parfait pour une petite structure qui n’a pas les ressources et/ou les besoins suffisants pour développer une solution sur mesure.  Ce conteneur Docker venant avec de nombreux outils sera cependant moins pertinent et peut être plus contraignant pour une grosse structure disposant déjà de ses propres outils.

L'approche intermédiaire : Camptocamp / docker-odoo-project

L'approche du partenaire historique est entre les deux.  

L’image, camptocamp/docker-odoo-projet, comprend quelques outils pour aider au développement, mais elle reste agnostique du côté du code Odoo.  Celui-ci est injecté au niveau de l’image spécifique au client.

CamptoCamp a voulu garder ainsi une grande souplesse sur la version du code qui est implémentée chez le client, tout en bénéficiant d'une image de base simple qui uniformise les outils des développeurs.  C’est aussi l’approche qu’Akretion, un autre partenaire historique d'Odoo, a privilégiée.


Conclusion

Il faut admettre qu’aucune de ces approches ne se démarque radicalement des autres. Elles ont toutes leurs avantages et leurs faiblesses.  Mais le dialogue était présent et il reste intéressant de découvrir ce que font chacun des partenaires.  Quelle que soit l'approche privilégiée, il est clair que la technologie Docker fait maintenant partie de l'environnement des projets Odoo et qu'elle est là pour rester, du moins jusqu'à ce qu'une autre technologie la surpasse.