Guide de Configuration Docker pour Projets Symfony

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

  1. Construction des conteneurs: Exécutez docker-compose build pour créer les images Docker nécessaires.
  2. Démarrage des services: Lancez docker-compose up -d pour 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.

Étiquettes: Docker Symfony nginx php-fpm MySQL

Publié le 25 juillet à 14h48