Guide de Configuration Docker pour Projets Symfony
Ce guide présente une configuration Docker complète pour exécuter des applications Symfony avec un environnement de développement conteneurisé.
1. Structure du Projet
environnement-symfony/
├── documentation/
│ └── configurations-avancees.md
├── stack-log/
│ └── logstash/
├── serveur-web/
├── environnement-php/
├── .env.modele
├── .gitignore
├── .travis.yml
├── LICENCE
├── README.md
├── docker-compose.yml
└── application/
└── configuration/
└── parametres.yml
Description des Répertoires
- documentation/: Contient la documentation personnalisée du projet, notamment des instructions pour ajouter des conteneurs optionnels comme Redis ou PHPMyAdmin.
- stack-log/: Regroupe les fichiers de configuration pour la pile ELK (Elasticsearch, Logstash, Kibana).
- serveur-web/: Inclut les fichiers de configuration pour le serveur Nginx.
- environnement-php/: Contient les fichiers de configuration pour PHP-FPM.
- application/: Abrite les fichiers de configuration de l'application Symfony, y compris
parametres.yml. - .env.modele: Modèle de fichier pour les variables d'environnement.
- .gitignore: Liste des fichiers à ignorer pour Git.
- .travis.yml: Configuration pour l'intégration continue Travis CI.
- LICENCE: Fichier de licence du projet.
- README.md: Documentation générale avec présentation et instructions d'utilisation.
- docker-compose.yml: Fichier de configuration principal pour Docker Compose.
2. Fichier de Configuration Principal
docker-compose.yml
Ce fichier définit l'ensemble des services nécessaires au fonctionnement de l'application Symfony :
version: '3.7'
services:
base-donnees:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: motdepasse_root
MYSQL_DATABASE: projet_symfony
MYSQL_USER: developpeur
MYSQL_PASSWORD: securite123
volumes:
- donnees_mysql:/var/lib/mysql
networks:
- reseau_app
environnement_php:
build:
context: .
dockerfile: environnement-php/Dockerfile
volumes:
- .:/var/www/projet
depends_on:
- base-donnees
networks:
- reseau_app
serveur_web:
build:
context: .
dockerfile: serveur-web/Dockerfile
ports:
- "8080:80"
volumes:
- .:/var/www/projet
depends_on:
- environnement_php
networks:
- reseau_app
pile_logs:
build:
context: .
dockerfile: stack-log/Dockerfile
ports:
- "9200:9200"
- "5601:5601"
volumes:
- ./journaux:/var/log/nginx
depends_on:
- environnement_php
networks:
- reseau_app
volumes:
donnees_mysql:
networks:
reseau_app:
driver: bridge
Étapes de Mise en Route
- Construction des conteneurs: Exécutez
docker-compose buildpour créer les images Docker nécessaires. - Démarrage des services: Lancez
docker-compose up -dpour démarrer tous les services en arrière-plan.
3. Fichiers de Configuration
.env.modele
Ce ficheir sert de modèle pour les variables d'environnement. Créez une copie nommée .env pour personnaliser ces paramètres selon vos besoins.
application/configuration/parametres.yml
Ce fichier configure les paramètres essentiels de l'application Symfony, notamment la connexion à la base de données :
parameters:
database_host: base-donnees
database_port: 3306
database_name: projet_symfony
database_user: developpeur
database_password: securite123
mailer_host: smtp.gmail.com
mailer_port: 587
mailer_user: votre_email@gmail.com
mailer_password: votre_mot_de_passe
secret: clef_secrete_aleatoire_pour_production
serveur-web/nginx.conf
Configuration du serveur web Nginx, définissant les ports d'écoute, les chemins des journaux et les règles de routage.
environnement-php/php-fpm.conf
Paramétrage de PHP-FPM pour la gestion des processus, l'optimisation des performances et la configuraton des logs.
stack-log/logstash/logstash.conf
Règles de traitement des logs pour Logstash, incluant les sources d'entrée, les filtres d'analyse et les destinations de sortie.
Cette configuraton Docker offre un environnement de développement complet et reproductible pour les applications Symfony, avec tous les services nécessaires préconfigurés.