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

📚Docker pour les débutants : Le Chantier Naval
📄 Article⏱ 5 min✅ 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

Dossier Contenu & 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.yml Décrit vos services et leur interaction. C’est le cœur de la stack.
.env Contient 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.