# Déployer GLPI avec Docker Dans cet article, nous allons déployer GLPI à l'aide d'un conteneur Docker. Cette approche vise à créer des configurations légères, reproductibles et faciles à intégrer. > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">L'objectif est de favoriser la montée en compétences et les tests dans un environnement isolé. Ne pas reproduire en environnement de production.</span> ## Pourquoi Docker pour 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 [Centre Docker](https://hub.docker.com/r/glpi/glpi) et le [Registre des conteneurs GitHub](https://github.com/orgs/glpi-project/packages/container/package/glpi). ## Guide de déploiement ### Environnement de démonstration Pour réaliser cette procédure, j'utilise 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 RAM libre recommandés. ### Configuration du fichier Docker Compose > [!info] À savoir ! <span style="font-weight: normal; color: var(--text-normal)">Docker Compose permet de créer et de gérer des applications multi-conteneurs. Les services de votre application, les réseaux et les volumes sont définis dans un seul fichier.</span> Nous allons configurer une instance GLPI en initialisant un fichier [docker-compose.yml](https://github.com/glpi-project/docker-images/blob/main/README.md#via-docker-compose). Pour cela, créez un dossier nommé `glpi-latest` à l'emplacement de votre choix. Ajoutez un fichier nommé `docker-compose.yml`, puis insérez la configuration suivante. ```yml name: glpi services: glpi: image: "glpi/glpi:latest" restart: "unless-stopped" volumes: # Using a named volume avoids permission issues on host (automatically managed by Docker) - glpi_data:/var/glpi # For GLPI 10.x, uncomment the following line to create a volume for plugins fetched from the marketplace. # - "./storage/glpi_marketplace:/var/www/glpi/marketplace/:rw" env_file: .env # Pass environment variables from .env file to the container depends_on: - db ports: - "80:80" db: image: "mysql" 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: ``` > [!info] À savoir ! <span style="font-weight: normal; color: var(--text-normal)">Les images `latest` sont utilisées ici pour simplifier le déploiement en environnement de test. Pour un environnement stable et reproductible, fixer une version précise (ex : `glpi/glpi:11.0`, `mysql:8.0`)</span> 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 ``` Par défaut, GLPI s'installe ou se met à jour automatiquement. Pour désactiver ce comportement, modifiez le fichier `.env`. Si vous souhaitez gérer manuellement l'installation et la configuration de GLPI, positionnez les deux options ci-dessous sur `true` dans le fichier `.env` : - `GLPI_SKIP_AUTOINSTALL` pour désactiver l'installation automatique. - `GLPI_SKIP_AUTOUPDATE` pour désactiver les mises à jour automatiques. Ensuite, démarrez l'application avec la commande suivante : ``` docker compose up -d ``` - `up` : démarre l'application multi-conteneurs - `-d` : exécute les conteneurs en arrière-plan > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Le mot de passe root MySQL est généré aléatoirement.</span> Pour vérifier les journaux de la base de données MySQL, vous devez récupérer l'ID du conteneur `db`. Listez les conteneurs actifs : ```powershell docker container ls ``` Dans mon cas, l'ID du conteneur `db` est `56122321eee1`. ![[_asset-tuto-glpi-docker-desktop.png]] Consultez ensuite les logs de ce conteneur : ``` docker logs 56122321eee1 ``` Recherchez le mot de passe root MySQL dans les logs : ![[_asset-tuto-glpi-docker-desktop-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. 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-desktop.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 > [!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>