Un template repository Docker Compose pour créer rapidement des environnements de développement avec différents langages et serveurs web. Parfait pour démarrer un nouveau projet ou prototyper une API.
- Fonctionnalités
- Utilisation du template
- Conseils pour le template
- Architecture
- Structure du projet
- Accès aux services
- Commandes disponibles
- Configuration
- Technologies incluses
- Gestion de Mailpit (SMTP local)
- Que fait
make clean-project? - Support
- Auteur
- Licence
- 🌐 Serveurs web : Apache ou Nginx
- 🚀 Backends : PHP (FPM), Node.js, Python ou Go
- 🗄️ Bases de données : PostgreSQL ou MySQL
- 📧 SMTP local : Mailpit
- 🔧 Configuration flexible : Variables d'environnement
- 🎯 Commandes : Makefile intégré
- 🧹 Nettoyage automatique : Supprime les éléments non utilisés
Sur GitHub :
- Cliquer sur "Use this template"
- Choisir un nom pour votre nouveau projet
- Cloner votre nouveau repository
git clone <votre-nouveau-repo> mon-nouveau-projet
cd mon-nouveau-projetmake switch [BACKEND=<php|node|go|python>] [BACKEND_VERSION=<ver>] [DB=<mysql|postgres>] [DB_VERSION=<ver>] [WEBSERVER=<apache|nginx>] [MAILPIT=<true|false>] [WEBSOCKET=<true|false>] [WEBSOCKET_TYPE=<socketio|native>]make clean-projectmake build- Application : http://localhost
- Mailpit : http://localhost:8025
- Commitez après clean-project :
git add . && git commit -m "Setup project with PHP+Apache+MySQL" - Modifiez le README : Adaptez-le à votre projet spécifique après clean-project
- Personnalisez : Modifiez les fichiers de configuration selon vos besoins
Dans GitHub :
- Cliquer sur "Actions"
- Cliquer sur "Sync Labels"
- Cliquer sur "Run workflow"
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Apache │ │ │ │ │
│ ou │───>│ PHP-FPM │───>│ PostgreSQL │
│ Nginx │ │ Node/Py/Go │ │ MySQL │
│ (port 80) │ │ │ │ │
└─────────────┘ └─────────────┘ └─────────────┘
- web : Serveur frontal (Apache/Nginx)
- api : Backend applicatif (PHP/NodeJS/Golang/Python)
- db : Base de données (PostgreSQL/MySQL)
- smtp : Serveur email local (Mailpit)
- websocket : Envoi de données en temps réel
dev-env/
├── 📄 Makefile # Commandes de gestion
├── 📄 .env # Variables d'environnement
├── 📄 docker-compose.yml # Configuration Docker
├── 📄 docker-compose.mailpit.yml # Configuration Docker pour Mailpit
├── 📄 docker-compose.websocket.yml # Configuration Docker pour Websocket
├── 📄 README.md
│
├── 🗂️ apache/ # Configuration Apache
│ ├── Dockerfile
│ └── vhost.conf
│
├── 🗂️ nginx/ # Configuration Nginx
│ ├── Dockerfile
│ └── nginx-default.conf # Configuration par défaut
│ └── nginx-php.conf # Configuration spécifique à PHP-FPM
│ └── nginx.conf
│
├── 🗂️ php/ # PHP-FPM
│ └── Dockerfile
│
├── 🗂️ node/ # Node.js
│ └── Dockerfile
│
├── 🗂️ python/ # Python
│ └── Dockerfile
│
├── 🗂️ go/ # Go
│ └── Dockerfile
│
├── 🗂️ websocket/ # Websocket
│ ├── Dockerfile
│ ├── server.js # Configuration
│ ├── package.json # Dépendances
│ └── index.html # Interface de test
│
└── 🗂️ api/ # Code source partagé
├── index.php # Point d'entrée PHP
├── index.js # Point d'entrée Node.js
├── package.json # Dépendances Node.js
├── main.py # Point d'entrée Python
├── requirements.txt # Dépendances Python
├── main.go # Point d'entrée Go
└── go.mod # Module Go
| Service | URL/Port | Description |
|---|---|---|
| Application | http://localhost | Votre API |
| Mailpit | http://localhost:8025 | Interface email |
| Websocket | http://localhost:8001 | Interface de test Websocket |
| SMTP | localhost:1025 | Serveur SMTP local |
| PostgreSQL | localhost:5432 | Base de données |
| MySQL | localhost:3306 | Base de données |
make config # Affiche la configuration actuelle
make switch [BACKEND=<php|node|go|python>] [BACKEND_VERSION=<ver>] [DB=<mysql|postgres>] [DB_VERSION=<ver>] [WEBSERVER=<apache|nginx>] [MAILPIT=<true|false>] [WEBSOCKET=<true|false>] [WEBSOCKET_TYPE=<socketio|native>] # Configure le projet
make clean-project # Nettoie le template pour un projet spécifiquemake start # Démarre les conteneurs
make stop # Arrête les conteneurs
make build # Reconstruit les images et redémarre les conteneurs
make clean # Arrête les conteneurs et nettoie la base de donnéesmake help # Aide complète
make status # État des conteneurs
make logs # Logs en temps réelLa configuration se fait via le fichier .env :
# Backend (php, node, python, go)
BACKEND=php
# Serveur web (apache, nginx)
WEBSERVER=apache
# Base de données (postgres, mysql)
DB_TYPE=postgres
# Paramètres BDD
DB_NAME=database
DB_USER=admin
DB_PASSWORD=root- Backend : PHP avec PHP-FPM
- Serveur web : Apache
- Base de données : PostgreSQL
make switch BACKEND=php BACKEND_VERSION=8.4 DB=mysql DB_VERSION=8.4 WEBSERVER=apache
make clean-project
make buildmake switch BACKEND=node BACKEND_VERSION=24 DB=pgsql DB_VERSION=17 WEBSERVER=nginx
make clean-project
make buildmake switch BACKEND=python BACKEND_VERSION=3.13 DB=pgsql DB_VERSION=17 WEBSERVER=apache
make clean-project
make buildmake switch BACKEND=go BACKEND_VERSION=1.24 DB=mysql DB_VERSION=8.4 WEBSERVER=nginx
make clean-project
make build- Extensions : gd, zip, pdo, curl, mbstring, xml, etc.
- PECL : redis, imagick
- Debug : Xdebug (activable avec
PHP_ENABLE_XDEBUG=1) - Composer : Gestionnaire de dépendances
- Modules : proxy, proxy_fcgi, rewrite
- Configuration : Virtual host optimisé pour PHP-FPM
- Support : Fichiers statiques + proxy backend
- Configuration : Optimisée pour PHP-FPM
- Features : Gestion statique, headers sécurité
- Performance : Cache et compression
- PostgreSQL : Port 5432
- MySQL : Port 3306
- Persistence : Volumes Docker
Quand Mailpit est activé :
- Interface web : http://localhost:8025
- Serveur SMTP : localhost:1025
- Capture tous les emails envoyés par votre application
- Interface moderne pour consulter, tester et déboguer les emails
MAIL_HOST=smtp
MAIL_PORT=1025
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=nullLa commande make clean-project adapte le template à votre configuration spécifique :
- ✅ Supprime les dossiers des backends non utilisés (ex: si vous utilisez PHP, supprime
node/,python/,go/) - ✅ Supprime les dossiers des serveurs web non utilisés (ex: si vous utilisez Apache, supprime
nginx/) - ✅ Nettoie les fichiers API non utilisés dans
api/(garde seulement le bon point d'entrée) - ✅ Simplifie le docker-compose.yml (supprime les configs inutiles)
- ✅ Nettoie le Makefile (supprime les commandes de template)
- ✅ Adapte les variables d'environnement à votre configuration
Pour un projet PHP + Apache + MySQL, vous aurez :
mon-projet/
├── 📄 Makefile # Simplifié
├── 📄 .env # Votre config
├── 📄 docker-compose.yml # Adapté à votre stack
├── 📄 README.md
├── 🗂️ apache/
├── 🗂️ php/
└── 🗂️ api/
└── index.php
make help # Aide complète
make config # Configuration actuelle
make status # État des services docker# Tous les logs
make logs
# Logs spécifiques
docker-compose logs web
docker-compose logs api
docker-compose logs db# Xdebug est automatiquement configuré
# Port: 9003, Host: host.docker.internal@NKoelblen alias @0N0K0
MIT License - Libre d'utilisation, modification et distribution.