https://github.com/teowaep/docker-spn-template
đ Template Docker prĂȘt Ă l'emploi pour Symfony 7 avec PostgreSQL, Nginx, pgAdmin et Makefile. Installation en 1 commande, dĂ©veloppement simplifiĂ© avec 70+ raccourcis.
https://github.com/teowaep/docker-spn-template
boilerplate devops docker docker-compose makefile nginx pgadmin php php8 postgresql starter-kit symfony symfony7 template xdebug
Last synced: 1 day ago
JSON representation
đ Template Docker prĂȘt Ă l'emploi pour Symfony 7 avec PostgreSQL, Nginx, pgAdmin et Makefile. Installation en 1 commande, dĂ©veloppement simplifiĂ© avec 70+ raccourcis.
- Host: GitHub
- URL: https://github.com/teowaep/docker-spn-template
- Owner: teowaep
- Created: 2025-11-24T12:43:42.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-11-24T22:06:06.000Z (about 1 month ago)
- Last Synced: 2025-11-28T06:16:33.135Z (28 days ago)
- Topics: boilerplate, devops, docker, docker-compose, makefile, nginx, pgadmin, php, php8, postgresql, starter-kit, symfony, symfony7, template, xdebug
- Language: Makefile
- Homepage:
- Size: 168 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# đ Template Docker - Symfony + PostgreSQL + Nginx






[](LICENSE)

Template prĂȘt Ă l'emploi pour dĂ©marrer rapidement un projet Symfony avec Docker, Nginx et PostgreSQL.
**Symfony 8.0 skeleton déjà installé** - Clone, configure et démarre en 5 commandes !
## đŠ Stack technique
- **PHP** 8.4-FPM avec Xdebug
- **Symfony** 8.0 skeleton
- **PostgreSQL** 18
- **pgAdmin** 4 (interface web pour PostgreSQL)
- **Nginx** 1.27+
- **Docker** & Docker Compose
- **Symfony CLI** intégré
---
## đŻ FonctionnalitĂ©s
â
**Symfony 8.0 skeleton déjà installé** - Clone et démarre !
â
Configuration Docker optimisée
â
Nginx configuré comme reverse proxy
â
PostgreSQL 18 avec persistence des données
â
pgAdmin intégré (interface web pour gérer PostgreSQL)
â
Makefile avec 70+ raccourcis pratiques
â
Xdebug configuré pour le développement
â
Health checks intégrés sur tous les services
â
Variables d'environnement sécurisées
â
Symfony CLI pré-installé
â
Upgrade en webapp (site web) en 1 commande
â
Upgrade en API (API Platform) en 1 commande
---
## đ PrĂ©requis
- Docker >= 20.10
- Docker Compose >= 2.0
- Git
### Configuration du template
Le template utilise :
- PHP 8.4 avec toutes les extensions Symfony 8.0 â
- Symfony CLI intĂ©grĂ© â
- Composer 2.9 â
- PostgreSQL 18
- Nginx 1.27
> đĄ Aucune installation locale requise ! Tout tourne dans Docker.
---
## đ Installation rapide
> đĄ **Ce template contient dĂ©jĂ Symfony 8 skeleton installĂ© !** Tu n'as qu'Ă cloner, configurer et dĂ©marrer.
### ⥠Installation avec Make (Recommandé)
**La méthode la plus rapide - 3 commandes :**
```bash
# 1. Cloner le template
git clone https://github.com/teowaep/docker-spn-template.git mon-projet
cd mon-projet
# 2. Supprimer l'historique Git du template
rm -rf .git
git init
# 3. Configurer l'environnement
cp .env.example .env
nano .env # Remplis POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB
# 4. Démarrer tout !
make setup
# 5. Lancer le terminal
make bash
```
**C'est tout ! đ** Ton projet est prĂȘt Ă **http://localhost:8080**
### đ§ Installation classique (Sans Make)
**Si tu n'as pas Make installé :**
```bash
# 1. Cloner le template
git clone https://github.com/teowaep/docker-spn-template.git mon-projet
cd mon-projet
# 2. Supprimer l'historique Git du template
rm -rf .git
git init
# 3. Configurer l'environnement
cp .env.example .env
nano .env # Remplis POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB
# 4. Ajuster DATABASE_URL dans .env
# Remplace cette ligne :
# DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
# Par :
# DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@backend-postgres:${POSTGRES_PORT}/${POSTGRES_DB}?serverVersion=18&charset=utf8"
# 5. Build et démarrer les containers
docker-compose build
docker-compose up -d
# 6. Corriger les permissions
docker-compose exec backend-php chmod -R 777 var/
# 7. Installer les dépendances
docker-compose exec backend-php composer install
# 8. Créer la base de données (nécessite Doctrine - voir ci-dessous)
docker-compose exec backend-php bash
composer require symfony/orm-pack
symfony console doctrine:database:create
exit
```
**Ton projet est prĂȘt !** Ouvre **http://localhost:8080** đ
---
### đŻ Variables .env importantes
```env
# Symfony
APP_ENV=dev
APP_SECRET=genere-un-secret-avec-openssl-rand-hex-32
# PostgreSQL (pour Docker)
POSTGRES_DB=mon_projet_db
POSTGRES_USER=mon_user
POSTGRES_PASSWORD=mon_password_securise
POSTGRES_PORT=5432
# Database URL (pour Symfony)
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@backend-postgres:${POSTGRES_PORT}/${POSTGRES_DB}?serverVersion=18&charset=utf8"
```
đĄ **GĂ©nĂ©rer APP_SECRET :**
```bash
openssl rand -hex 32
```
---
### đŠ Choisir ta stack (Optionnel)
Le template contient **Symfony skeleton** (version minimale). Tu peux l'upgrader selon tes besoins :
#### Option 1 : Webapp (Site web classique)
**Avec Make :**
```bash
make upgrade-webapp
```
**Sans Make :**
```bash
docker-compose exec backend-php composer require webapp
```
**Inclut :** Twig, Doctrine, Formulaires, Sécurité, Asset Mapper
---
#### Option 2 : API (API REST)
**Avec Make :**
```bash
make upgrade-api
```
**Sans Make :**
```bash
docker-compose exec backend-php composer require api
```
**Inclut :** API Platform, Doctrine, Serializer, Validation
Documentation API disponible Ă : **http://localhost:8080/api**
---
**Différences skeleton / webapp / api :**
| Fonctionnalité | Skeleton (inclus) | Webapp | API |
| --------------------- | ----------------- | ------ | --- |
| Framework de base | â
| â
| â
|
| Twig (templates) | â | â
| â |
| Doctrine (ORM) | â | â
| â
|
| Formulaires | â | â
| â |
| SĂ©curitĂ© | â | â
| â
|
| Asset Mapper | â | â
| â |
| API Platform | â | â | â
|
| Documentation OpenAPI | â | â | â
|
---
### đ Commandes utiles aprĂšs installation
```bash
# Entrer dans le container PHP
make bash
# ou
docker-compose exec backend-php bash
# Créer une entité (nécessite Doctrine/webapp)
make entity name=Article
# Voir les logs
make logs-php
# ArrĂȘter les containers
make down
```
---
## đ ïž Commandes utiles
### đĄ Travailler comme en local
Pour une meilleure expérience de développement, **entre dans le container PHP** et travaille comme si tu étais en local :
```bash
# Entrer dans le container PHP
docker-compose exec backend-php bash
# Maintenant tu es dans le container, tu peux utiliser toutes les commandes directement !
symfony console cache:clear
symfony console make:entity
composer require symfony/mailer
symfony security:check
```
**đ Toutes les commandes ci-dessous sont prĂ©sentĂ©es comme si tu Ă©tais dans le container.**
Si tu préfÚres exécuter depuis l'hÎte sans entrer dans le container, préfixe simplement avec :
```bash
docker-compose exec backend-php [ta-commande]
```
---
### đš Utiliser le Makefile (Raccourcis pratiques)
Un **Makefile** est inclus pour simplifier l'utilisation avec des raccourcis !
**Voir toutes les commandes disponibles :**
```bash
make help
# ou juste
make
```
**Top 10 des commandes les plus utiles :**
```bash
make up # Démarrer tous les containers
make down # ArrĂȘter tous les containers
make bash # Entrer dans le container PHP
make logs-php # Voir les logs PHP en direct
make cache-clear # Vider le cache Symfony
make db-migrate # Exécuter les migrations
make entity name=Article # Créer une entité
make controller name=Article # Créer un controller
make db-reset # Reset complet de la DB
make app # Ouvrir l'app dans le navigateur
```
**Catégories de commandes :**
đł Docker (10 commandes)
```bash
make up # Démarrer les containers
make down # ArrĂȘter les containers
make restart # Redémarrer
make build # Construire les images
make rebuild # Reconstruire (sans cache)
make ps # Ătat des containers
make logs # Tous les logs
make logs-php # Logs PHP uniquement
make logs-nginx # Logs Nginx uniquement
make logs-db # Logs PostgreSQL uniquement
make clean # Supprimer tout (â ïž volumes inclus)
```
đ§ AccĂšs rapide (4 commandes)
```bash
make bash # Entrer dans le container PHP
make db-shell # Accéder au shell PostgreSQL
make pgadmin # Ouvrir pgAdmin dans le navigateur
make app # Ouvrir l'application dans le navigateur
```
đ” Symfony (9 commandes)
```bash
make cache-clear # Vider le cache
make cache-warmup # Préchauffer le cache
make routes # Voir toutes les routes
make entity name=Article # Créer une entité
make controller name=Article # Créer un controller
make crud name=Article # Créer un CRUD complet
make form name=Article # Créer un formulaire
make security # Vérifier les vulnérabilités
make sf cmd="debug:container" # Commande Symfony personnalisée
```
đŠ Composer (5 commandes)
```bash
make composer-install # Installer les dépendances
make composer-update # Mettre Ă jour
make composer-require package=symfony/mailer # Ajouter un package
make composer-remove package=symfony/mailer # Supprimer un package
make composer-dump # Régénérer l'autoload
```
đïž Base de donnĂ©es (12 commandes)
```bash
make db-create # Créer la base de données
make db-drop # Supprimer la base de données
make db-migrate # Exécuter les migrations
make db-migration # Créer une nouvelle migration
make db-diff # Générer une migration automatiquement
make db-validate # Valider le schéma
make db-fixtures # Charger les fixtures
make db-reset # Reset complet (drop+create+migrate+fixtures)
make db-backup # Créer un backup dans backups/
make db-restore file=backups/backup.sql # Restaurer un backup
```
đ§Ș Tests (2 commandes)
```bash
make test # Exécuter les tests PHPUnit
make test-coverage # Tests avec couverture de code
```
đ Installation (4 commandes)
```bash
make setup # Installation complete (Symfony deja installe)
make upgrade-webapp # Passer de skeleton a webapp (site web)
make upgrade-api # Passer de skeleton a API (API REST)
```
đ§ Utilitaires (7 commandes)
```bash
make fix-perms # Corriger les permissions
make clear-cache # Supprimer var/cache/
make clear-logs # Supprimer var/log/
make phpstan # Analyse statique (si installé)
make cs-fixer # Formater le code (si installé)
make stats # Voir stats CPU/RAM des containers
make health # Vérifier la santé de tous les services
```
**Exemples d'utilisation :**
```bash
# Workflow quotidien
make up && make bash # Démarrer et entrer dans PHP
# Créer une nouvelle fonctionnalité
make entity name=Product
make crud name=Product
make db-migration
make db-migrate
# Debugging
make logs-php # Terminal 1
make logs-db # Terminal 2
# Reset complet de la DB
make db-reset
# Backup avant grosse modif
make db-backup
```
đĄ **Astuce :** Le Makefile est optionnel. Si tu prĂ©fĂšres, tu peux toujours utiliser les commandes Docker classiques ou entrer dans le container avec `make bash` (ou `docker-compose exec backend-php bash`).
---
### Docker (depuis l'hĂŽte)
```bash
# Démarrer les containers
docker-compose up -d
# ArrĂȘter les containers
docker-compose down
# Voir les logs
docker-compose logs -f
# Voir les logs d'un service spécifique
docker-compose logs -f backend-php
docker-compose logs -f backend-nginx
docker-compose logs -f backend-postgres
# Voir l'état des containers
docker-compose ps
# Reconstruire les images
docker-compose build
# Redémarrer un service
docker-compose restart backend-php
# đ Entrer dans le container PHP (recommandĂ© pour le dĂ©veloppement)
docker-compose exec backend-php bash
# Supprimer tout (containers + volumes)
docker-compose down -v
```
---
### Symfony (dans le container)
```bash
# Vider le cache
symfony console cache:clear
# Créer une entité
symfony console make:entity
# Créer un controller
symfony console make:controller
# Créer une migration
symfony console make:migration
# Exécuter les migrations
symfony console doctrine:migrations:migrate
# Voir les routes
symfony console debug:router
# Voir les services
symfony console debug:container
# Vérifier les vulnérabilités de sécurité
symfony security:check
# Lancer les tests
symfony php bin/phpunit
```
**đĄ Astuce :** Tu peux aussi utiliser `php bin/console` au lieu de `symfony console` :
```bash
php bin/console cache:clear
php bin/console make:entity
```
---
### Composer (dans le container)
```bash
# Installer les dépendances
composer install
# Mettre à jour les dépendances
composer update
# Ajouter un package
composer require [package]
# Exemples courants :
composer require symfony/mailer
composer require symfony/messenger
composer require api-platform/core
composer require doctrine/doctrine-fixtures-bundle --dev
# Supprimer un package
composer remove [package]
# Voir les packages installés
composer show
# Rechercher un package
composer search [mot-clé]
```
---
### Base de données (dans le container)
**Commandes Doctrine :**
```bash
# Créer la base de données
symfony console doctrine:database:create
# Supprimer la base de données
symfony console doctrine:database:drop --force
# Créer une entité
symfony console make:entity
# Créer une migration
symfony console make:migration
# Voir le SQL de la migration (sans l'exécuter)
symfony console doctrine:migrations:migrate --dry-run
# Exécuter les migrations
symfony console doctrine:migrations:migrate
# Annuler la derniĂšre migration
symfony console doctrine:migrations:migrate prev
# Charger des fixtures (si doctrine-fixtures-bundle installé)
symfony console doctrine:fixtures:load
# Valider le schéma de base de données
symfony console doctrine:schema:validate
```
**AccĂšs direct Ă PostgreSQL :**
```bash
# Sortir du container PHP et accéder à PostgreSQL
# (Ou ouvrir un nouveau terminal)
exit
docker-compose exec backend-postgres psql -U ton_user -d ton_db
# Une fois dans psql :
\l # Lister toutes les bases
\dt # Lister les tables
\d+ nom_table # Décrire une table
SELECT * FROM ...; # ExĂ©cuter une requĂȘte
\q # Quitter psql
```
**Backup et restauration (depuis l'hĂŽte) :**
```bash
# Backup
docker-compose exec backend-postgres pg_dump -U ton_user ton_db > backup.sql
# Restauration
docker-compose exec -T backend-postgres psql -U ton_user ton_db < backup.sql
```
---
## đ Workflow de dĂ©veloppement typique
Voici un workflow typique pour développer avec ce template :
**Option 1 : Avec le Makefile (recommandé, plus rapide)**
```bash
# 1. Démarrer les services
make up
# 2. Vérifier que tout tourne
make ps
# 3. Entrer dans le container PHP
make bash
# 4. Créer une nouvelle entité
symfony console make:entity Article
# 5. Créer une migration
symfony console make:migration
# 6. Exécuter la migration
symfony console doctrine:migrations:migrate
# 7. Vérifier dans pgAdmin
# Lance: make pgadmin (dans un autre terminal)
# 8. Créer un controller
symfony console make:controller ArticleController
# 9. Installer un nouveau package si besoin
composer require symfony/mailer
# 10. Vérifier la sécurité
symfony security:check
```
**Option 2 : Sans Makefile (commandes Docker classiques)**
```bash
# 1. Démarrer les services
docker-compose up -d
# 2. Vérifier que tout tourne
docker-compose ps
# 3. Entrer dans le container PHP
docker-compose exec backend-php bash
# ... puis les mĂȘmes commandes Symfony/Composer qu'au-dessus
```
### đĄ Pendant le dĂ©veloppement
Tu peux garder **3 terminaux ouverts** :
1. **Terminal 1** - Dans le container PHP (pour les commandes Symfony/Composer)
```bash
make bash
# ou
docker-compose exec backend-php bash
```
2. **Terminal 2** - Pour les logs Docker
```bash
make logs-php
# ou
docker-compose logs -f backend-php
```
3. **Navigateur** - Onglet avec ton app (http://localhost:8080) + onglet pgAdmin (http://localhost:5050)
---
## âïž Configuration
### Services & Ports
| Service | Port interne | Port exposé | URL d'accÚs |
| ---------- | ------------ | ----------- | --------------------- |
| Nginx | 80 | 8080 | http://localhost:8080 |
| PHP-FPM | 9000 | - | (interne) |
| PostgreSQL | 5432 | 5432 | localhost:5432 |
| pgAdmin | 80 | 5050 | http://localhost:5050 |
| Xdebug | 9003 | 9003 | (IDE) |
### Modifier les ports
**Dans `docker-compose.yml` :**
```yaml
backend-nginx:
ports:
- "8080:80" # Change 8080 par le port souhaité
backend-postgres:
ports:
- "5432:5432" # Change 5432 par le port souhaité
```
### Variables d'environnement
**Fichier `.env` (configuration locale) :**
```env
APP_ENV=dev # Environnement : dev, prod, test
APP_SECRET=xxx # Secret Symfony (32+ caractĂšres)
POSTGRES_DB=nom_db # Nom de la base de données
POSTGRES_USER=user # Utilisateur PostgreSQL
POSTGRES_PASSWORD=password # Mot de passe PostgreSQL
POSTGRES_PORT=5432 # Port PostgreSQL
```
---
## đïž pgAdmin - Interface web pour PostgreSQL
pgAdmin est inclus dans le stack Docker et accessible via le navigateur web.
### AccĂšs Ă pgAdmin
1. **Ouvre ton navigateur :** http://localhost:5050
2. **Connexion Ă pgAdmin :**
```
Email: admin@admin.com
Password: admin
```
### Configurer la connexion à ta base de données
Lors de ta premiĂšre connexion, tu dois ajouter ton serveur PostgreSQL :
1. **Clic droit sur "Servers"** â **"Register"** â **"Server..."**
2. **Onglet "General" :**
```
Name: Mon Projet (ou ce que tu veux)
```
3. **Onglet "Connection" :**
```
Host name/address: backend-postgres â IMPORTANT ! (nom du service Docker)
Port: 5432
Maintenance database: postgres
Username: ton_user (depuis .env - POSTGRES_USER)
Password: ton_password (depuis .env - POSTGRES_PASSWORD)
```
4. **Coche "Save password"** (optionnel mais pratique)
5. **Clique sur "Save"**
Et voilĂ ! Tu peux maintenant :
- đ Voir toutes tes tables
- đ Parcourir les donnĂ©es
- âïž ExĂ©cuter des requĂȘtes SQL
- đ Visualiser les relations entre tables
- đŸ Faire des backups/imports
### đĄ Astuce
La configuration de pgAdmin est persistée dans le volume `pgadmin_data`. Tu n'auras à configurer la connexion qu'une seule fois !
### â ïž Note importante
Pour te connecter depuis pgAdmin (qui est dans Docker), tu **dois utiliser** le nom du service Docker (`backend-postgres`) et **pas** `localhost`. C'est parce que pgAdmin et PostgreSQL sont tous les deux dans le réseau Docker `newproject_network`.
---
## đ Debugging avec Xdebug
Xdebug est pré-configuré dans l'image PHP pour le développement.
### Configuration VSCode
Crée `.vscode/launch.json` :
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}"
}
}
]
}
```
### Configuration PhpStorm
1. **Settings â PHP â Servers**
2. Ajouter un serveur :
- Name : `localhost`
- Host : `localhost`
- Port : `8080`
- Debugger : `Xdebug`
- Use path mappings : â
- Project files â `/var/www/html`
### Activer le debug
```bash
# Xdebug est configuré avec start_with_request=trigger
# Ajoute ?XDEBUG_SESSION_START=1 Ă ton URL
# Ou utilise l'extension navigateur Xdebug Helper
```
---
## đ Troubleshooting
### Les containers ne démarrent pas
```bash
# Voir les logs détaillés
docker-compose logs
# Reconstruire complĂštement
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d
```
### Erreur "Permission denied"
```bash
# Depuis l'hĂŽte
sudo chown -R $USER:$USER .
# Depuis le container
chown -R www-data:www-data var/
```
### Nginx retourne 502 Bad Gateway
```bash
# Depuis l'hÎte - Vérifier que PHP-FPM tourne
docker-compose ps backend-php
# Vérifier les logs
docker-compose logs backend-php
docker-compose logs backend-nginx
# Redémarrer les services
docker-compose restart backend-php backend-nginx
```
### Impossible de se connecter Ă PostgreSQL
```bash
# Depuis l'hÎte - Vérifier que PostgreSQL est démarré
docker-compose ps backend-postgres
# Vérifier la santé du service
docker-compose exec backend-postgres pg_isready -U ton_user
# Tester la connexion
docker-compose exec backend-postgres psql -U ton_user -d ton_db
# Dans le container PHP - Vérifier les variables d'environnement
env | grep DATABASE
```
### Xdebug ne fonctionne pas
```bash
# Dans le container - Vérifier que Xdebug est installé
php -v
# Tu devrais voir : "with Xdebug v3.x.x"
# Vérifier la configuration
php -i | grep xdebug
# Depuis l'hĂŽte - Reconstruire l'image avec Xdebug
docker-compose build --no-cache backend-php
```
### Symfony retourne 500
```bash
# Dans le container - Vider le cache
symfony console cache:clear
# Voir les logs Symfony (dans le container ou depuis l'hĂŽte)
tail -f var/log/dev.log
# Vérifier les permissions
ls -la var/
```
### Composer install échoue
```bash
# Dans le container - Vider le cache Composer
composer clear-cache
# Réinstaller
rm -rf vendor/
composer install
```
### pgAdmin ne se connecte pas Ă PostgreSQL
```bash
# Vérifie que tu utilises le bon host
Host: backend-postgres â PAS localhost !
# Vérifie que PostgreSQL est accessible
docker-compose exec backend-postgres pg_isready
# Vérifie les credentials dans .env
cat .env | grep POSTGRES
# Redémarre pgAdmin
docker-compose restart pgadmin
```
### Impossible d'accéder à pgAdmin (http://localhost:5050)
```bash
# Vérifier que pgAdmin tourne
docker-compose ps pgadmin
# Voir les logs
docker-compose logs pgadmin
# Redémarrer pgAdmin
docker-compose restart pgadmin
# Si ça ne marche toujours pas, reconstruire
docker-compose up -d --force-recreate pgadmin
```
---
## đš Personnalisation
### Changer le nom du projet
**Dans `docker-compose.yml` :**
```yaml
name: mon-projet # Change "newproject"
services:
backend-php:
container_name: mon-projet-php # Change les noms
backend-nginx:
container_name: mon-projet-nginx
backend-postgres:
container_name: mon-projet-postgres
```
### Ajouter un service (Redis, Mailcatcher, etc.)
**Exemple : Ajouter Redis**
Dans `docker-compose.yml` :
```yaml
services:
redis:
image: redis:7-alpine
container_name: newproject-redis
ports:
- "6379:6379"
networks:
- newproject_network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
```
Dans `.env` :
```env
REDIS_URL=redis://redis:6379
```
Puis dans le container PHP :
```bash
composer require symfony/redis-bundle predis/predis
```
### Modifier la version PHP
**Dans `docker/php/Dockerfile.dev` :**
```dockerfile
FROM php:8.3-fpm # Change 8.4 par la version souhaitée
```
Puis rebuild :
```bash
docker-compose build --no-cache backend-php
```
### Ajouter des extensions PHP
**Dans `docker/php/Dockerfile.dev`, aprĂšs les autres extensions :**
```dockerfile
RUN docker-php-ext-install -j$(nproc) gd bcmath soap
```
Puis rebuild :
```bash
docker-compose build --no-cache backend-php
```
### Retirer pgAdmin (si tu ne veux pas l'utiliser)
Si tu préfÚres utiliser un client local ou pas de visualiseur du tout :
**Dans `docker-compose.yml`, supprime ou commente :**
```yaml
# pgadmin:
# image: dpage/pgadmin4:latest
# ...
# Et dans volumes:
# pgadmin_data:
# name: newproject_pgadmin_data
```
Puis :
```bash
docker-compose down
docker-compose up -d
```
---
## đ SĂ©curitĂ©
### Pour la production
Avant de déployer en production :
1. **Changer `APP_SECRET`** avec une valeur forte et unique
2. **Changer les credentials PostgreSQL**
3. **Passer `APP_ENV=prod`**
4. **Désactiver Xdebug** (utiliser `ARG INSTALL_XDEBUG=false` dans le build)
5. **Utiliser HTTPS** avec des certificats valides
6. **Renforcer les headers de sécurité** dans Nginx
7. **Configurer les CORS** si API
8. **Optimiser le cache OPcache**
### Variables sensibles
â ïž **Ne commite JAMAIS ton fichier `.env` !**
Le fichier `.gitignore` est configuré pour ignorer `.env`, vérifie avant chaque commit :
```bash
git status
```
---
## đ Ressources utiles
- [Documentation Symfony](https://symfony.com/doc/current/index.html)
- [Documentation Docker](https://docs.docker.com/)
- [Documentation PostgreSQL](https://www.postgresql.org/docs/)
- [Documentation Nginx](https://nginx.org/en/docs/)
- [Xdebug Documentation](https://xdebug.org/docs/)
- [Symfony CLI Documentation](https://symfony.com/download)
---
## đ€ Contribution
Ce template est privé et destiné à un usage personnel/interne.
Si tu veux le partager avec ton équipe :
1. Assure-toi que tous les secrets sont externalisés dans `.env`
2. Documente les spécificités de ton setup
3. Teste l'installation sur une machine vierge
---
## đ Changelog
### Version 1.0 (2025-11-24)
- âš Configuration initiale
- âš Docker Compose avec PHP 8.4, Nginx, PostgreSQL 18
- ⚠pgAdmin 4 intégré (interface web pour PostgreSQL)
- âš Makefile avec 70+ raccourcis pratiques
- ⚠Xdebug configuré
- ⚠Symfony CLI intégré
- âš Health checks sur tous les services
- âš Documentation complĂšte avec commandes "locales"
---
## đ License
Projet privé - Tous droits réservés
---
## đ Bon dĂ©veloppement !
Si tu rencontres des problÚmes ou as des suggestions d'amélioration, n'hésite pas !
**Créé avec â€ïž pour accĂ©lĂ©rer le dĂ©veloppement Symfony avec Docker**