Essayez Demo fr
  • en
  • fr
  • de
  • Solutions
    • Cas d’usage
      • Intranet moderneDéveloppez votre culture d’entreprise & le sentiment d’appartenance
      • Plateforme collaborativeGérez vos projets & renforcez l’efficacité des équipes
      • Réseau socialConnectez & engagez vos collaborateurs
      • Gestion des connaissancesOrganisez & partagez vos connaissances
      • Portail d’applicationsCentralisez l’accès à l’information & aux applications
    • Secteurs
      • Secteur public
      • Réseaux
      • Education
      • Entreprises
  • Produit
    • Aperçu
      • Digital workplaceCapacités fonctionnelles
      • Pourquoi eXoPrincipaux différenciateurs
      • InternationalisationGestion des environnements multilingues
      • MobileApplications mobile personnalisées
    • Plateforme
      • No codePersonnalisez la plateforme sans code
      • IntégrationsConnecteurs & capacités d’extension
    • Technologie
      • ArchitectureArchitecture & technologie
      • SécuritéMesures de sécurité
      • Open sourceLicences & composants
  • Offres
    • Offre EntreprisePlus de 250 utilisateurs
    • Offre ProfessionnelleMoins de 250 utilisateurs
    • Offre OEMIntégrez eXo Platform dans votre propre solution
    • ServicesNotre offre de services
  • Ressources
    • Centre de ressources
      • Etudes de cas
      • Fiches produit
      • Livres blancs
      • Vidéos
    • Guide de migration
      • Alternative à Microsoft 365
      • Alternative à Sharepoint
      • Alternative à Workplace from Meta
    • Blog
      • Lancement de la version majeure eXo Platform 7.0
      • eXo Platform 7.0 Edition Communautaire est disponible
      • eXo Platform et Schiever lauréats des cas d’or de la collaboration agile 2022
  • Communauté
    • CommunautéRejoignez notre communauté en ligne
    • TéléchargementLancer la plateforme eXo dans votre infrastructure
    • Code sourceCode source sur Github
    • FAQsQuestions sur les offres, logiciel et la communauté
    • API REST & DocumentationToutes les API REST disponibles dans eXo Platform
  • Entreprise
    • A propos d’eXo
    • Clients
    • Partenaires
    • Contactez-nous
    • Actualités
  • Menu mobile
    • Tarifs
    • A propos d’eXo
    • Carrières
    • Centre de ressources
    • Blog
    • Contactez-nous
    • Essayez eXo
Cas d'usage
  • Intranet moderne Développez votre culture d’entreprise & le sentiment d’appartenance
  • Plateforme collaborative Gérez vos projets & renforcez l’efficacité des équipes
  • Réseau social Connectez & engagez vos collaborateurs
  • Gestion des connaissances Organisez & partagez vos connaissances
  • Portail d'applications Centralisez l’accès à l’information & aux applications
Secteurs
  • Secteur public
  • Réseaux
  • Education
  • Entreprises
Aperçu
  • Digital workplace Capacités fonctionnelles
  • Pourquoi eXo Principaux différenciateurs
  • Internationalisation Gestion des environnements multilingues
  • Mobile Applications mobile personnalisées
Plateforme
  • No code Personnalisez la plateforme sans code
  • Intégrations Connecteurs & capacités d’extension
Technologie
  • Architecture Architecture & technologie
  • Sécurité Mesures de sécurité
  • Open source Licences & composants
Offre Entreprise Plus de 250 utilisateurs
Offre Professionnelle Moins de 250 utilisateurs
Offre OEM Intégrez eXo Platform dans votre propre solution
Services Notre offre de services
Centre de ressources
  • Etudes de cas
  • Fiches produit
  • Livres blancs
  • Vidéos
Guide de migration
  • Alternative à Microsoft 365
  • Alternative à Sharepoint
  • Alternative à Workplace from Meta
Blog
  • Lancement de la version majeure eXo Platform 7.0
  • eXo Platform 7.0 Edition Communautaire est disponible
  • eXo Platform et Schiever lauréats des cas d’or de la collaboration agile 2022
Communauté Rejoignez notre communauté en ligne
Téléchargement Lancer la plateforme eXo dans votre infrastructure
Code source Code source sur Github
FAQs Questions sur les offres, logiciel et la communauté
API REST & Documentation Toutes les API REST disponibles dans eXo Platform
A propos d'eXo
Clients
Partenaires
Contactez-nous
Actualités
Tarifs
A propos d'eXo
Carrières
Centre de ressources
Blog
Contactez-nous
Essayez eXo
  1. Accueil
  2. Etudes de cas
  3. eXo Platform dans un Docker container !

eXo Platform dans un Docker container !

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) :

docker run -ti --rm --name exo \
  -p 8080:8080 \
  exoplatform/exo-community:4.3

Au bout de quelques dizaines de secondes, vous voyez apparaître dans les logsServer 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 :

docker volume create --name=data

docker volume create --name=logs

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

docker run -ti --rm --name exo \
  -p 8080:8080 \
  -v data:/srv/exo \
  -v logs:/var/log/exo \
  exoplatform/exo-community:4.3

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 :

# MySQL data volume creation
docker volume create --name=mysql_data

# MySQL server start with an exo schema
docker run -d --name mysql \
  -v mysql_data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=exo \
  -e MYSQL_USER=exo \
  -e MYSQL_PASSWORD=exo \
  mysql:5.5

# Check MySQL logs
docker logs mysql

 

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) :

# creating new clean volumes for eXo Platform persistent data
docker volume create --name=exo_data
docker volume create --name=exo_logs

# starting eXo Platform configured with MySQL
docker run -ti --rm --name exo \
  -p 8080:8080 \
  -v exo_data:/srv/exo \
  -v exo_logs:/var/log/exo \
  --link mysql:mysql \
  -e EXO_DB_TYPE=mysql \
  -e EXO_DB_NAME=exo \
  -e EXO_DB_USER=exo \
  -e EXO_DB_PASSWORD=exo \
  -e EXO_DB_HOST=mysql \
  -e EXO_ADDONS_LIST=exo-jdbc-driver-mysql \
  exoplatform/exo-community:4.3

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 :

# stop eXo Platform running container
docker stop exo

# stop MySQL running container
docker stop mysql
docker rm mysql

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

version: '2'
services:
  exo:
    image: exoplatform/exo-community:4.3
    environment:
      EXO_DB_TYPE: mysql
      EXO_DB_NAME: exo
      EXO_DB_USER: exo
      EXO_DB_PASSWORD: exo
      EXO_DB_HOST: mysql
      EXO_ADDONS_LIST: exo-jdbc-driver-mysql
    expose:
      - "8080"
    ports:
      - "8080:8080"
    volumes:
      - exo_data:/srv/exo
      - exo_logs:/var/log/exo
    links:
      - mysql
    depends_on:
      - mysql
  mysql:
    image: mysql:5.5
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
      MYSQL_DATABASE: exo
      MYSQL_USER: exo
      MYSQL_PASSWORD: exo
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  exo_data:
    external:
      name: exo_data
  exo_logs:
    external:
      name: exo_logs
  mysql_data:
    external:
      name: mysql_data

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 :

  • plus d’options pour configurer votre container eXo Platform : https://hub.docker.com/r/exoplatform/exo-community/
  • plus d’options pour configurer votre container MySQL : https://hub.docker.com/_/mysql/

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 !

Frederic Drouet

Une digital workplace tout-en-un centrée sur l'utilisateur pour des collaborateurs connectés et engagés

  • Fonctions
    • Communication Interne
    • Ressources humaines
    • Direction informatique
  • Produit
    • La Plateforme
    • Communiquer
    • Collaborer
    • Connaissances
    • Productivité
    • Open source
    • Integrations
    • Sécurité
  • Usages
    • Digital workplace
    • Logiciel collaboratif
    • Logiciel intranet
    • Gestion des connaissances
    • Plateforme d’engagement collaborateur
    • Réseau social d’entreprise
  • Guides
    • Qu’est ce q’un intranet ?
    • Plateforme collaborative
    • Guide Digital Workplace
    • La collaboration
    • Le travail collaboratif
    • Engagement collaborateur
    • Espace numérique de travail
  • Ressources
    • FAQs
    • Offres produit
    • Offres services
    • Centre de ressources
    • Clients
    • Partenaires
    • A propos de nous
  • Conditions Générales
  • Confidentialité
  • Mentions légales
  • Accessibilité
  • Plan du site
  • Contact
  • Facebook
  • Twitter
  • LinkedIn
wpDiscuz