Environnement de développement conteneurisé pour ClientXCMS basé sur Laravel 11.
Le devcontainer utilise une architecture microservices :
- cli : PHP 8.3-cli (workspace VSCode) - Composer, Node.js, npm
- fpm : PHP 8.3-FPM (exécution PHP)
- nginx : Serveur web Nginx 1.27
- mariadb : Base de données MariaDB 11.2
- redis : Cache et sessions Redis 7.2
- scheduler : Ofelia pour les tâches cron Laravel
- phpmyadmin : Interface de gestion de base de données
- mailpit : Serveur SMTP de test pour capturer les emails
clientxcms
: Base de données principaleclientxcms_test
: Base de données pour les tests PHPUnit
# Depuis VSCode
# 1. Ouvrir le dossier du projet
# 2. Cmd/Ctrl + Shift + P
# 3. "Remote-Containers: Reopen in Container"
Lors du premier démarrage, le script setup.sh
s'exécute automatiquement et :
✅ Copie et configure .env
avec les bonnes variables
✅ Installe les dépendances Composer
✅ Installe les dépendances NPM
✅ Build les assets frontend
✅ Génère la clé d'application
✅ Attend la connexion à la base de données
✅ Exécute les migrations
✅ Crée un utilisateur admin par défaut
✅ Configure OAuth
✅ Importe les traductions (fr_FR)
✅ Nettoie le cache
Identifiants admin par défaut :
- Email :
admin@clientxcms.local
- Password :
password
- Application : http://localhost
- phpMyAdmin : http://localhost:8080
- Serveur :
mariadb
- Utilisateur :
root
- Mot de passe :
clientxcms
- Serveur :
- Mailpit (Emails) : http://localhost:8025
- Interface web pour visualiser tous les emails envoyés par l'application
# Migration et seed
php artisan migrate
php artisan db:seed
# Tests
php artisan test
php artisan test --filter=NomDuTest
# Cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
# Scheduler (test manuel)
php artisan schedule:run
# Queue (mode database, pas besoin de worker)
php artisan queue:work --once
# Dev mode avec hot reload
npm run dev
# Build production
npm run build
# Watch mode
npm run watch
# Installer une dépendance
composer require vendor/package
# Mise à jour
composer update
# Autoload
composer dump-autoload
# Afficher les tables
php artisan db:table migrations
# Voir le statut des migrations
php artisan migrate:status
# Rollback
php artisan migrate:rollback
# Fresh install (ATTENTION: supprime toutes les données!)
php artisan migrate:fresh --seed
- Intelephense : Autocomplétion PHP avancée
- Laravel Extra Intellisense : Autocomplétion Laravel (routes, views, config)
- Laravel Artisan : Commandes Artisan depuis VSCode
- Laravel Blade : Coloration syntaxique Blade
- Laravel Goto View : Navigation rapide vers les vues
- PHP Namespace Resolver : Import automatique des classes
- PHP DocBlocker : Génération de PHPDoc
- Better PHPUnit : Exécution de tests depuis VSCode
- Tailwind CSS IntelliSense : Autocomplétion Tailwind
- GitLens : Git amélioré
- EditorConfig : Configuration d'éditeur
- DotENV : Coloration syntaxique .env
Claude CLI est préinstallé dans le devcontainer pour faciliter le développement avec l'IA d'Anthropic.
Ton fichier d'authentification (~/.claude/
) est automatiquement monté dans le container en lecture seule. Tu es donc déjà authentifié dès le lancement du devcontainer !
# Lancer Claude CLI
claude
# Ou utiliser la commande complète
claude-code
# Obtenir de l'aide
claude --help
Si tu n'as pas encore configuré Claude CLI sur ta machine hôte, lance-le d'abord en dehors du container :
# Sur ta machine hôte (pas dans le container)
claude-code login
Une fois authentifié, rebuild le devcontainer pour monter les credentials
# Demander à Claude d'analyser du code
claude "Explique-moi cette fonction"
# Générer du code
claude "Crée un contrôleur Laravel pour gérer les produits"
# Déboguer
claude "J'ai cette erreur dans mon code : [copier l'erreur]"
# Optimiser
claude "Comment puis-je optimiser cette requête SQL ?"
Plusieurs alias sont configurés pour simplifier l'utilisation :
cc # claude --dangerously-skip-permissions --resume
ccc # claude --dangerously-skip-permissions
Note sur --dangerously-skip-permissions
: Cet alias permet à Claude de travailler sans demander confirmation à chaque opération. C'est pratique dans un environnement de développement conteneurisé où tu as le contrôle total.
Le fichier .env
est configuré automatiquement avec :
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=clientxcms
DB_USERNAME=clientxcms
DB_PASSWORD=clientxcms
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
QUEUE_CONNECTION=database
CACHE_DRIVER=redis
SESSION_DRIVER=redis
APP_URL=http://localhost
APP_ENV=local
APP_DEBUG=true
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Si tu souhaites modifier les identifiants de base de données ou autre :
- Éditer
.devcontainer/docker-compose.yaml
- Éditer
.devcontainer/setup.sh
(section sed pour le .env) - Rebuild le container :
Cmd/Ctrl + Shift + P
→Remote-Containers: Rebuild Container
Le scheduler Ofelia exécute php artisan schedule:run
toutes les minutes.
Les tâches Laravel configurées :
invoices:delivery
: Traitement des factures en attenteservices:expire
: Expiration des servicesservices:renewals
: Génération des factures de renouvellementservices:notify-expiration
: Notifications d'expirationclientxcms:helpdesk-close
: Fermeture automatique des ticketsclientxcms:invoice-delete
: Purge des anciennes facturesclientxcms:purge-metadata
: Nettoyage des métadonnéesclientxcms:telemetry
: Envoi de télémétrie
# Tous les tests
php artisan test
# Test spécifique
php artisan test --filter=CustomerControllerTest
# Suite spécifique
php artisan test --testsuite=Feature
# Avec couverture
php artisan test --coverage
Avec l'extension Better PHPUnit :
- Clic droit sur un test →
Run Test
- Clic droit sur une classe →
Run Test Suite
- Voir les résultats dans le panneau OUTPUT
# Logs Laravel
tail -f storage/logs/laravel.log
# Logs Nginx (depuis l'host)
tail -f .github/logs/nginx/error.log
L'extension Xdebug est installée. Pour activer :
- Ajouter dans
.env
:XDEBUG_MODE=debug
- Rebuild le container
- Configurer un breakpoint dans VSCode
- F5 pour lancer le debugger
# Depuis VSCode
Cmd/Ctrl + Shift + P → "Remote-Containers: Rebuild Container"
# Ou depuis le terminal
docker-compose -f .devcontainer/docker-compose.yaml down -v
docker-compose -f .devcontainer/docker-compose.yaml build --no-cache
docker-compose -f .devcontainer/docker-compose.yaml up -d
# Attention : supprime toutes les données de la base !
docker-compose -f .devcontainer/docker-compose.yaml down -v
# Supprimer les dépendances
rm -rf vendor node_modules
# Supprimer les fichiers générés
rm -rf bootstrap/cache/*.php
rm -rf storage/framework/cache/*
rm -rf storage/framework/sessions/*
rm -rf storage/framework/views/*
# Supprimer .env
rm .env
# Rebuild container → le setup.sh réinstallera tout
Pour toute question ou problème :
- Vérifier les logs :
storage/logs/laravel.log
- Vérifier la connexion DB :
php artisan db:show
- Tester la config :
php artisan config:show
- Faire des modifications dans le code PHP/Blade
- Voir le résultat instantanément dans le navigateur (http://localhost)
- Tester avec
php artisan test
- Commit régulièrement avec Git
# Voir les routes
php artisan route:list
# Créer un contrôleur
php artisan make:controller NomController
# Créer un modèle avec migration
php artisan make:model NomModel -m
# Créer une migration
php artisan make:migration create_table_name
# Lancer les migrations
php artisan migrate
# Créer un test
php artisan make:test NomTest
Concept SysAdmin | Équivalent Laravel | Commande |
---|---|---|
Cron jobs | Scheduler | php artisan schedule:run |
Service restart | Cache clear | php artisan cache:clear |
Log rotation | Log channels | storage/logs/ |
Config reload | Config cache | php artisan config:cache |
Service status | Health check | php artisan db:show |
Backup | Database dump | php artisan db:backup |
Bon développement ! 🚀