Installer XWiki avec Docker

03 mars 2020 5 min read
Écrit par Oana Elena Florea, Responsable du support client

Pourquoi utiliser Docker ?

Docker est un outil conçu pour faciliter la création, le déploiement et l'exécution d'applications à l'aide de conteneurs. Les conteneurs permettent à un développeur d’intégrer dans une application tous les éléments dont il a besoin, telles que des bibliothèques logicielles et leurs dépendances, et de les mettre à disposition sous la forme d'un fichier unique. En faisant cela, grâce au conteneur, le développeur peut être assuré que l'application s'exécutera sur toute autre machine, quels que soient les paramètres spécifiques de cette machine qui pourraient différer de la machine utilisée pour écrire et tester le code.

Premiers pas avec XWiki avec Docker

La communauté open source XWiki a publié la première version d'un système XWiki prêt pour la production fonctionnant avec Docker en 2017. L'adoption par les utilisateurs n'a cessé d'augmenter, et à présent plus de 26% de toutes les installations actives XWiki sont représentées par des installations Docker.

Le guide complet pour installer XWiki avec Docker est disponible sur https://github.com/xwiki-contrib/docker-xwiki/blob/master/README.md. La façon la plus simple de démarrer avec XWiki en utilisant Docker est d'utiliser des images existantes (à partir de DockerHub ou construites à partir des sources).

dockerhub-xwiki.png

Ensuite, vous pouvez utiliser la commande docker run et suivre trois étapes de base pour exécuter un conteneur pour l'image XWiki et un pour l'image de base de données à laquelle XWiki se connecte.

Étape 1: Créer un réseau Docker dédié

Utilisez la commande docker network pour créer une connexion réseau à utiliser ensuite par les images.

docker network create -d bridge xwiki-nw

Étape 2: Exécuter un conteneur pour l'image de base de données à laquelle XWiki se connecte

Dans le cas d'une installation d'XWiki avec MySQL, vous devez d'abord créer un fichier init.sql dans un dossier my/path/mysql-init qui donnera des autorisations à l'utilisateur xwiki de créer de nouveaux schémas (requis pour pouvoir créer des sous-wikis):

grant all privileges on *.* to xwiki@'%' identified by 'xwiki'

Voici un exemple de la commande docker run pour configurer l'image de la base de données MySQL:

docker run --net=xwiki-nw --name mysql-xwiki -v /my/path/mysql:/var/lib/mysql -v /my/path/mysql-init:/docker-entrypoint-initdb.d -e MYSQL_ROOT_PASSWORD=xwiki -e MYSQL_USER=xwiki -e MYSQL_PASSWORD=xwiki -e MYSQL_DATABASE=xwiki -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin --explicit-defaults-for-timestamp=1

Explication des paramètres :

  • xwiki-nw est la connexion réseau créée à l'étape 1,
  • mysql-xwiki est le nom du conteneur d'ancrage de la base de données,
  • /my/path/mysql est le dossier local où Docker stockera les données de la base de données,
  • /my/path/mysql-init est le dossier où est stocké le fichier init.sql,
  • The MySQL image v5.7 est extrait de Docker Hub,
  • MYSQL_DATABASE spécifie le nom de la base de données pour XWiki.

Étape 3: Exécuter un conteneur pour l'image XWiki

Ensuite, vous devez exécuter la commande docker run pour l'image XWiki:

docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v /my/path/xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=mysql-xwiki xwiki:lts-mysql-tomcat

Explication des paramètres :

  • xwiki-nw est le pont réseau créé à l'étape 1,
  • xwiki est le nom du conteneur Docker XWiki,
  • -p 8080:8080 expose le port 8080 du conteneur à l'hôte 8080 (-p hostPort:containerPort),
  • pour -v /my/path/xwiki:/usr/local/xwiki, le chemin /my/path/xwiki représente le dossier local où Docker stockera les fichiers de configuration et les données dynamiques pour XWiki, tandis que /usr/local/xwiki représente le chemin de stockage des données à l'intérieur du conteneur,
  • DB_HOST est le nom du conteneur contenant la base de données créée à l'étape 2.

Comment tester que cela fonctionne réellement ?

Si vous ouvrez le navigateur et que vous consultez votre wiki (par exemple http://localhost:8080/bin/view/Main/), vous devez obtenir l'assistant de distribution d'XWiki pour terminer le processus d'installation : 

XWiki-up.png

Vous pouvez vous connecter à l'instance MySQL à l'intérieur du conteneur mysql-xwiki :

docker exec -it mysql-xwiki bash
mysql -uxwiki -pxwiki


Ensuite, vous pouvez utiliser les commandes MySQL standard pour vérifier la base de données créée par XWiki.

Éléments à prendre en compte lors de l'installation d'XWiki avec Docker

  • Le dossier local où Docker stocke les données /my/path/mysql doit être vide.
  • Tous les dossiers locaux (e.g. /my/path/mysql-init, /my/path/mysql, /my/path/xwiki) doivent disposer des droits appropriés fournis par le système d'exploitation.
  • Utilisez docker ps pour vérifier si les conteneurs sont correctement opérationnels.
  • Consultez la documentation complète sur https://github.com/xwiki-contrib/docker-xwiki/blob/master/README.md

Articles similaires :