Essayez Demo fr
  • en
  • fr
  • de
  • Produit
    • Plateforme
      • Aperçu de la plateformeFonctionnalités principales
      • Pourquoi eXoPrincipaux différenciateurs
      • InternationalisationConçue pour des environnements multilingues
      • MobileUtilisez votre plateforme sur appareils mobiles
    • Technologie
      • No codePersonnalisez facilement votre plateforme
      • ArchitectureAperçu de l’architecture de la plateforme
      • IntégrationsComment eXo s’intègre avec vos outils et systèmes
      • SécuritéComment eXo garantit la sécurité de vos données
      • Open sourceAperçu de notre plateforme open-source
  • Solutions
    • Communication
      • Intranet moderneConstruisez votre culture d’entreprise avec eXo
      • Gestion des connaissancesCentraliser et partager les connaissances de l’entreprise
      • Gestion des communautésGérez vos communautés
      • ExtranetImpliquez vos clients et partenaires
    • Collaboration
      • Réseau socialConnectez vos collaborateurs
      • Plateforme collaborativeRenforcer vos équipes
      • Portail collaborateurRenforcez vos équipes avec eXo
      • Engagement collaborateurStimulez l’engagement de vos collaborateurs
    • Pour
      • Secteur public
      • Réseaux
      • Education
      • Entreprises
  • Tarifs
  • 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
      • eXo Platform 6.5 est disponible !
      • eXo Platform lance sa communauté en ligne “la Tribe eXo”
      • 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
    • Clients
    • Partenaires
    • Services
    • A propos d’eXo
    • Contactez-nous
    • Actualités
  • Menu mobile
    • Tarifs
    • A propos d’eXo
    • Carrières
    • Centre de ressources
    • Blog
    • Contactez-nous
    • Essayez eXo
Plateforme
  • Aperçu de la plateforme Fonctionnalités principales
  • Pourquoi eXo Principaux différenciateurs
  • Internationalisation Conçue pour des environnements multilingues
  • Mobile Utilisez votre plateforme sur appareils mobiles
Technologie
  • No code Personnalisez facilement votre plateforme
  • Architecture Aperçu de l’architecture de la plateforme
  • Intégrations Comment eXo s’intègre avec vos outils et systèmes
  • Sécurité Comment eXo garantit la sécurité de vos données
  • Open source Aperçu de notre plateforme open-source
Communication
  • Intranet moderne Construisez votre culture d’entreprise avec eXo
  • Gestion des connaissances Centraliser et partager les connaissances de l’entreprise
  • Gestion des communautés Gérez vos communautés
  • Extranet Impliquez vos clients et partenaires
Collaboration
  • Réseau social Connectez vos collaborateurs
  • Plateforme collaborative Renforcer vos équipes
  • Portail collaborateur Renforcez vos équipes avec eXo
  • Engagement collaborateur Stimulez l’engagement de vos collaborateurs
Pour
  • Secteur public
  • Réseaux
  • Education
  • Entreprises
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
  • eXo Platform 6.5 est disponible !
  • eXo Platform lance sa communauté en ligne “la Tribe eXo”
  • 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
Clients
Partenaires
Services
A propos d'eXo
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