eXo Platform dans un Docker container !

eXo Platform Blog

Nous allons voir qu’il est très facile d’exécuter eXo Platform dans un container Docker, de rendre les données persistantes entre 2 redémarrages d’un container et de brancher son déploiement sur une base de données MySQL.

Pour pouvoir tester le contenu de cet article il vous faut :

  • Docker 1.11+ (utilisez Docker4Mac ou Docker4Windows si vous êtes sur un de ces 2 environnements qui ne supportent pas nativement Docker)
  • Docker Compose 1.7+
  • un accès internet (pour télécharger les images Docker)
  • du café (car c’est encore plus long de télécharger des images Docker que de faire un build avec Maven 😉 )

Tout d’abord, faisons au plus simple et démarrons eXo Platform édition Community dans un container Docker. Pour cela, nous allons utiliser l’image Docker exoplatform/exo-community avec ses réglages par défaut (ça peut être un peu long la première fois le temps que l’image Docker soit téléchargée) :

Au bout de quelques dizaines de secondes, vous voyez apparaître dans les logs Server startup in 58220 ms . A ce moment là, eXo Platform est initialisé et vous pouvez tester votre installation en vous rendant sur http://localhost:8080/

exo-started Que va-t-il se passer maintenant si vous arrêtez et recréez votre container ? et bien vos données auront disparues car elles étaient stockées directement dans ce container. Pour palier à ce problème, nous allons utiliser des volumes Docker afin de stocker les données persistantes en dehors du container. Commençons par créer 2 volumes :

et redémarrons eXo Platform dans notre container en utilisant ces volumes :     

Désormais les données persistantes d’eXo Platform (indexes JCR, Values Storage, …) seront stockées dans le volume data et les logs dans le volume logs. Vous pouvez donc arrêter et supprimer votre container et en redémarrer un nouveau, toutes les données que vous aurez déjà saisi resteront disponibles. Bon ça y est ? Je peux passer en production puisque mes données survivent à un redémarrage ? Eh bien non, surtout pas, car il vous manque une base de données utilisable en production !!!
En effet, sans paramétrage particulier, notre image Docker démarre une base de données HSQLDB qui fonctionne très bien pour des tests, mais qui ne doit pas être utilisée en production. Nous allons donc utiliser MySQL 5.5 comme base de données (eXo Platform supporte d’autres types de SGBD). Commençons par démarrer un serveur MySQL dans un Docker container :

 

Maintenant que la base de données est prête, nous pouvons démarrer eXo Platform en configurant l’image pour qu’elle utilise MySQL. Cette image, fournie par eXo, expose un ensemble de paramètres permettant d’adapter le comportement de l’image au moment de la création du container (pour une liste détaillée de ces paramètre vous pouvez vous référer à sa documentation en ligne) :

Et voilà ! notre instance eXo Platform est maintenant connectée à une base de données MySQL et toutes les données utilisateurs résisteront à une recréation de vos containers. Connectez-vous à votre nouvel intranet social, invitez du monde et collaborez :

exo-with-content

Bon c’est très bien tout ça, vous pouvez désormais déployer en production, mais ça reste tout de même compliqué à démarrer. Pour simplifier encore plus tout ça nous allons utiliser Docker Compose pour pouvoir contrôler notre environnement complet en une ligne de commande beaucoup plus simple.

Pour cela, arrêtons et supprimons tout d’abord les containers précédemment démarrés :

Ensuite créons un fichier docker-compose.yml avec le contenu suivant :

Il ne nous reste plus qu’à démarrer l’ensemble (base de donnée MySQL et eXo Platform ) avec la simple commande suivante : docker-compose -f ./docker-compose.yml up .

mysql

Après ce redémarrage avec Docker Compose, vous retrouverez les données précédemment créées.

Il y a encore beaucoup d’autres choses à faire autour de eXo Platform et Docker alors restez à l’écoute de notre blog …

Pour aller plus loin :


Rejoignez notre Tribe

Rejoignez notre Tribe

Faites partie de notre communauté et recevez nos mises à jour, tutoriels, nos add-ons et bien d’autres choses !
Je m’inscris !

Postes Connexes
Commentaires
Laisser une réponse

Votre adresse email ne sera pas publiée.

j’ai pris connaissance et j’accepte la politique de confidentialité En savoir Plus

Vous pouvez utiliser ces HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">