📚 Docker pour les débutants : Le Chantier Naval

5.2 : La Structure de Projet Idéale : Organisation des dossiers (/app, /data, /conf)

📄 Article ⏱ 5 ✅ Gratuit

Maintenant que nous savons pourquoi Docker Compose est utile, il est important d’apprendre à organiser notre projet correctement.
Une bonne structure permet de :

  • Comprendre rapidement votre stack
  • Faciliter la maintenance
  • Partager ou versionner le projet sans casse-tête

La structure recommandée

Voici une structure classique et fonctionnelle pour un projet Docker Compose :

mon-projet/
├─ docker-compose.yml # Décrit tous les services
├─ .env # Variables d’environnement (ports, mots de passe, etc.)
├─ app/ # Code de l’application (site web, API, scripts)
│ ├─ index.php
│ └─ ...
├─ data/ # Données persistantes (bases de données, uploads)
│ └─ mariadb/
├─ conf/ # Fichiers de configuration (php.ini, nginx.conf, Traefik, etc.)
│ └─ ...
└─ logs/ # Journaux d’activité si besoin

Description des dossiers

DossierContenu & rôle
app/Contient tout le code de l’application. Avec un bind mount, Docker peut accéder directement à votre code depuis le conteneur.
data/Contient les volumes persistants pour les bases de données ou fichiers générés par l’application. Exemple : ./data/mariadb:/var/lib/mysql.
conf/Contient les fichiers de configuration spécifiques à vos services. Exemple : nginx.conf, php.ini, traefik.yml.
logs/Optionnel, pour centraliser les journaux si vous ne voulez pas les stocker directement dans les conteneurs.
docker-compose.ymlDécrit vos services et leur interaction. C’est le cœur de la stack.
.envContient toutes vos variables sensibles ou paramétrables. Permet de changer la configuration sans toucher au YAML.

Bonnes pratiques

  • Séparer le code, la configuration et les données : cela simplifie les backups et mises à jour.
  • Toujours utiliser un .env pour éviter de coder les mots de passe dans le YAML.
  • Nommer vos dossiers et services clairement : app, db, cache sont préférables à service1, service2.
  • Ne jamais stocker les données importantes uniquement dans le conteneur : les conteneurs peuvent disparaître. Utilisez des volumes.
  • Versionner votre projet (Git) en excluant les dossiers de données volumineuses (/data) avec .gitignore.

📌 À retenir

  • Un projet Docker Compose doit être propre, lisible et maintenable.
  • /app pour le code, /data pour les données persistantes, /conf pour les configs.
  • .env pour la configuration dynamique.
  • Cette organisation vous prépare à gérer des projets plus complexes et à collaborer avec d’autres développeurs.