Retour aux projets
À propos du projet
Ce projet représente une solution d'architecture moderne permettant de connecter deux applications web distinctes à une base de données MySQL unique via Docker. L'objectif principal était de créer un environnement de développement reproductible et isolé tout en permettant le partage de données entre plusieurs applications Laravel.
La conteneurisation Docker garantit que chaque service fonctionne dans son propre environnement isolé, ce qui simplifie le déploiement et réduit les conflits de dépendances. Cette approche démontre une compréhension approfondie des concepts DevOps et des architectures cloud-native.
Objectifs
- Créer une architecture multi-applications avec partage de données centralisé
- Implémenter une solution conteneurisée complète avec Docker
- Assurer l'isolation des environnements tout en permettant la communication
- Optimiser la persistance des données avec des volumes Docker
- Faciliter le déploiement et la maintenance des applications
- Mettre en place une infrastructure évolutive et maintenable
Fonctionnalités clés
Conteneurisation complète
Tous les services sont conteneurisés pour garantir la portabilité et l'isolation.
Base de données partagée
MySQL centralisé accessible par plusieurs applications Laravel simultanément.
Nginx & PHP-FPM
Configuration optimisée de Nginx comme reverse proxy avec PHP-FPM.
Volumes persistants
Gestion des volumes Docker pour la persistance des données et du code.
Réseau Docker
Configuration réseau permettant la communication inter-conteneurs.
Docker Compose
Orchestration simplifiée de tous les services avec un fichier YAML.
Architecture technique
Services Docker
- Application Laravel 1 : Premier site web avec son propre conteneur Nginx/PHP-FPM
- Application Laravel 2 : Deuxième site web avec configuration similaire mais indépendante
- MySQL : Serveur de base de données partagé entre les deux applications
- Nginx : Serveur web et reverse proxy pour chaque application
- PHP-FPM : Gestionnaire de processus FastCGI pour PHP
Configuration
Le projet utilise Docker Compose pour orchestrer tous les services. Chaque service est défini avec :
- Des images Docker officielles ou personnalisées
- Des volumes pour la persistance et le développement
- Des variables d'environnement pour la configuration
- Des ports exposés pour l'accès externe
- Des dépendances entre services pour l'ordre de démarrage
Technologies utilisées
- Docker : Plateforme de conteneurisation pour l'isolation et la portabilité
- Docker Compose : Outil d'orchestration pour gérer les multi-conteneurs
- Laravel : Framework PHP moderne pour les applications web
- MySQL : Système de gestion de base de données relationnelle
- Nginx : Serveur web haute performance et reverse proxy
- PHP-FPM : Gestionnaire de processus PHP FastCGI
Compétences développées
- Maîtrise de Docker et de la conteneurisation
- Configuration et orchestration de services avec Docker Compose
- Gestion des réseaux Docker et de la communication inter-conteneurs
- Administration de bases de données MySQL
- Configuration de serveurs web Nginx
- Compréhension des architectures microservices
- Gestion des volumes et de la persistance des données
- Débogage et résolution de problèmes dans des environnements conteneurisés
Défis relevés
- Configuration du partage de base de données entre plusieurs applications
- Gestion des permissions et de la sécurité dans les conteneurs
- Optimisation de la configuration Nginx pour les performances
- Mise en place de volumes persistants pour le développement
- Résolution des problèmes de réseau entre conteneurs
- Configuration des variables d'environnement Laravel pour Docker