# Déployer un lab GLPI avec Docker Compose Dans cet article, nous allons déployer un environnement GLPI fonctionnel à l’aide de Docker Compose. Si vous souhaitez installer GLPI de façon plus traditionnel dans une VM Debian, consultez le tutoriel dédié [[tuto-glpi-debian-install|Installer GLPI sous Debian]]. Ce tutoriel s’appuie sur les bases vues dans [[tuto-docker-compose|prise en main Docker Compose]] et propose une configuration prête à l’emploi pour un lab. > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Cet environnement est conçu pour des tests rapides et jetables afin de favoriser la montée en compétences. Ne pas utiliser en production.</span> ## Pourquoi utiliser Docker pour un lab GLPI ? L’exécution de GLPI dans Docker apporte plusieurs avantages : - **Flexibilité** : changez de version ou testez de nouvelles fonctionnalités en quelques étapes. - **Gain de temps** : concentrez-vous sur l'utilisation de GLPI plutôt que sur le dépannage de l’environnement. Les images officielles sont disponibles sur [Docker Hub](https://hub.docker.com/r/glpi/glpi) et le [Dépôt glpi-project sur GitHub](https://github.com/orgs/glpi-project/packages/container/package/glpi). ## Guide de déploiement ### Environnement de démonstration L'environnement de démonstration est basé sur une machine sous Windows 11 avec Docker Desktop installé. La procédure de déploiement de [[tuto-docker-desktop-windows|Docker Desktop sous Windows 11]] n'est pas décrite ici. ### Prérequis - Docker Desktop installé et opérationnel - Port 80 disponible sur la machine hôte - 2 Go de RAM libre recommandés - Avoir pris en main [[tuto-docker-compose|Docker Compose]] ### Configuration du fichier Docker Compose Nous allons déployer GLPI à l’aide d’un fichier `docker-compose.yml`. - Créez un dossier nommé `glpi-lab` à l’emplacement de votre choix. - Ajoutez un fichier nommé `docker-compose.yml`, puis insérez la configuration suivante : ```yml services: glpi: image: glpi/glpi:11.0 restart: unless-stopped volumes: - glpi_data:/var/glpi env_file: .env depends_on: - db ports: - "80:80" db: image: mysql:8.0 restart: unless-stopped volumes: - db_data:/var/lib/mysql environment: MYSQL_RANDOM_ROOT_PASSWORD: "yes" MYSQL_DATABASE: ${GLPI_DB_NAME} MYSQL_USER: ${GLPI_DB_USER} MYSQL_PASSWORD: ${GLPI_DB_PASSWORD} volumes: glpi_data: db_data: ``` ### Comprendre le fichier docker-compose.yml - `services` : définit les conteneurs à lancer - `glpi` : service de l’application web - `db` : service de base de données MySQL - `image` : image Docker utilisée pour créer le conteneur - `ports` : expose le service sur la machine hôte (`http://localhost:80`) - `volumes` : permet de conserver les données même après suppression des conteneurs - `glpi_data` : fichiers de GLPI - `db_data` : base de données MySQL - `env_file` : charge les variables définies dans le fichier `.env` - `depends_on` : démarre le service `db` avant `glpi` ### Créer le fichier .env Créez un fichier nommé `.env` (les fichiers qui commencent par `.` sont des fichiers cachés sous Linux). ```dotenv GLPI_DB_HOST=db GLPI_DB_PORT=3306 GLPI_DB_NAME=glpidb GLPI_DB_USER=glpidb_admin GLPI_DB_PASSWORD=glpidb_admin_password GLPI_SKIP_AUTOINSTALL=false GLPI_SKIP_AUTOUPDATE=false ``` ### Comprendre le fichier .env Ce fichier permet de définir les variables utilisées par GLPI pour se connecter à la base de données et gérer son comportement au démarrage. - `GLPI_DB_HOST` : nom du service MySQL (ici `db`) - `GLPI_DB_PORT` : port utilisé par le service MySQL (3306 par défaut) - `GLPI_DB_NAME` : base de données utilisée par GLPI - `GLPI_DB_USER` / `GLPI_DB_PASSWORD` : identifiants de connexion - `GLPI_SKIP_AUTOINSTALL=false` : GLPI s’installe automatiquement au premier démarrage - `GLPI_SKIP_AUTOUPDATE=false` : GLPI se met à jour automatiquement si nécessaire > [!info] À savoir ! <span style="font-weight: normal; color: var(--text-normal)">Pour gérer manuellement l'installation et les mises à jour de GLPI, positionnez les options `GLPI_SKIP_AUTOINSTALL` et `GLPI_SKIP_AUTOUPDATE` sur `true` dans le fichier `.env`.</span> ### Démarrer votre application GLPI Ensuite, démarrez l'application avec la commande : ``` docker compose up -d ``` - `up` : démarre l'application multi-conteneurs - `-d` : exécute les conteneurs en arrière-plan Confirmez le statut des conteneurs `db` et `glpi` en utilisant la commande : ```powershell docker compose ps ``` Les deux services doivent apparaître avec l’état `running`. ![[_asset-tuto-glpi-docker-install.png]] Si un conteneur est en erreur, consultez ses logs avec `docker compose logs <service>`. ### Récupérer le mot de passe root MySQL > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Le mot de passe root MySQL est généré aléatoirement.</span> Consultez les logs du conteneur `db` pour récupérer le mot de passe root MySQL : ```powershell docker compose logs db ``` Recherchez le mot de passe root MySQL dans les logs : ![[_asset-tuto-glpi-docker-install-2.png]] ## Première connexion sur GLPI Une fois les conteneurs en cours d'exécution, accédez à GLPI via `http://localhost`. Par défaut, vous arriverez directement sur l'interface d'authentification. Vous pouvez vous connecter avec les identifiants par défaut : - Utilisateur : `glpi` - Mot de passe : `glpi` > [!warning] Rappel ! <span style="font-weight: normal; color: var(--text-normal)">Il est recommandé de modifier ces identifiants après la première connexion.</span> Si l'option `GLPI_SKIP_AUTOINSTALL` est positionnée sur `true` dans le fichier `.env`, vous devrez finaliser l'installation de GLPI manuellement en spécifiant les informations de base de données : - Nom d'hôte : `db` - Base de données : `glpidb` - Utilisateur : `glpidb_admin` - Mot de passe : `glpidb_admin_password` ![[_asset-tuto-glpi-docker-install.mp4]] ## Supprimer les conteneurs Pour supprimer les conteneurs, les volumes et les réseaux créés par ce `docker-compose`, exécutez la commande : ```powershell docker compose down -v ``` > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Cette commande supprime l'ensemble des données et des paramètres de personnalisation.</span> ## Conclusion Avec Docker, vous disposez en quelques minutes d'un environnement de test complet avec la dernière version de GLPI. Cette configuration est personnalisable. Pour en savoir plus, consultez le [README officiel](https://github.com/glpi-project/docker-images/blob/main/README.md) et le [Registre des conteneurs GitHub](https://github.com/orgs/glpi-project/packages/container/package/glpi). Vous pouvez par exemple : - Gérer les fuseaux horaires - Optimiser les volumes Docker utilisés - Ajouter des configurations PHP personnalisées - Gérer les tâches planifiées Ce type de déploiement constitue une base simple et reproductible pour expérimenter GLPI et comprendre le fonctionnement d’une application multi-conteneurs avec Docker Compose. > [!info] À savoir ! <span style="font-weight: normal; color: var(--text-normal)">L'image du conteneur GLPI est mise à jour de façon hebdomadaire. Elle contient la dernière version prise en charge de GLPI et intègre les derniers correctifs de sécurité.</span> > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Le code de l'application GLPI n'est jamais modifié lors de ces reconstructions. Seuls le système d'exploitation, le runtime PHP et les bibliothèques système sont mis à jour.</span> Pour aller plus loin, vous pouvez adapter cette configuration ou créer vos propres services en vous appuyant sur [[tuto-docker-compose|Docker Compose]].