.PHONY: help local dev prod start stop restart logs status build clean test verify # Configuration PROJECT_NAME := LeDiscord help: ## Afficher cette aide @echo "🚀 $(PROJECT_NAME) - Makefile Zero-Config" @echo "==========================================" @echo "" @echo "📋 Environnements disponibles :" @echo " local - Développement local (localhost)" @echo " dev - Environnement de développement (dev.lediscord.com)" @echo " prod - Production (lediscord.com)" @echo "" @echo "🔧 Commandes disponibles :" @echo "" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' @echo "" @echo "💡 Exemples :" @echo " make local # Démarrer en mode local" @echo " make dev # Démarrer en mode développement" @echo " make prod # Démarrer en mode production" @echo " make stop-local # Arrêter en mode local" @echo " make logs-dev # Voir les logs en mode développement" # =========================================== # LOCAL (développement sur votre machine) # =========================================== local: ## Démarrer en mode local @echo "🚀 Démarrage de $(PROJECT_NAME) en mode LOCAL..." @docker compose -f docker-compose.local.yml up --build -d @echo "✅ $(PROJECT_NAME) local démarré !" @echo " Frontend: http://localhost:5173" @echo " Backend: http://localhost:8000" @echo " API Docs: http://localhost:8000/docs" stop-local: ## Arrêter en mode local @echo "🛑 Arrêt de $(PROJECT_NAME) en mode LOCAL..." @docker compose -f docker-compose.local.yml down @echo "✅ $(PROJECT_NAME) local arrêté" restart-local: ## Redémarrer en mode local @echo "🔄 Redémarrage de $(PROJECT_NAME) en mode LOCAL..." @$(MAKE) stop-local @$(MAKE) local logs-local: ## Voir les logs en mode local @echo "📝 Logs de $(PROJECT_NAME) en mode LOCAL..." @docker compose -f docker-compose.local.yml logs -f status-local: ## Voir le statut en mode local @echo "📊 Statut de $(PROJECT_NAME) en mode LOCAL..." @docker compose -f docker-compose.local.yml ps build-local: ## Reconstruire en mode local @echo "🔨 Reconstruction de $(PROJECT_NAME) en mode LOCAL..." @docker compose -f docker-compose.local.yml build --no-cache @echo "✅ Reconstruction terminée" # =========================================== # DEVELOPMENT (dev.lediscord.com) # =========================================== dev: ## Démarrer en mode développement @echo "🚀 Démarrage de $(PROJECT_NAME) en mode DEVELOPMENT..." @docker compose -f docker-compose.dev.yml up --build -d @echo "✅ $(PROJECT_NAME) development démarré !" @echo " Frontend: http://localhost:8082" @echo " Backend: http://localhost:8002" @echo " API Docs: http://localhost:8002/docs" stop-dev: ## Arrêter en mode développement @echo "🛑 Arrêt de $(PROJECT_NAME) en mode DEVELOPMENT..." @docker compose -f docker-compose.dev.yml down @echo "✅ $(PROJECT_NAME) development arrêté" restart-dev: ## Redémarrer en mode développement @echo "🔄 Redémarrage de $(PROJECT_NAME) en mode DEVELOPMENT..." @$(MAKE) stop-dev @$(MAKE) dev logs-dev: ## Voir les logs en mode développement @echo "📝 Logs de $(PROJECT_NAME) en mode DEVELOPMENT..." @docker compose -f docker-compose.dev.yml logs -f status-dev: ## Voir le statut en mode développement @echo "📊 Statut de $(PROJECT_NAME) en mode DEVELOPMENT..." @docker compose -f docker-compose.dev.yml ps build-dev: ## Reconstruire en mode développement @echo "🔨 Reconstruction de $(PROJECT_NAME) en mode DEVELOPMENT..." @docker compose -f docker-compose.dev.yml build --no-cache @echo "✅ Reconstruction terminée" # =========================================== # PRODUCTION (lediscord.com) # =========================================== prod: ## Démarrer en mode production @echo "🚀 Démarrage de $(PROJECT_NAME) en mode PRODUCTION..." @docker compose -f docker-compose.prod.yml up --build -d @echo "✅ $(PROJECT_NAME) production démarré !" @echo " Frontend: http://localhost:80" @echo " Backend: http://localhost:8001" @echo " API Docs: http://localhost:8001/docs" stop-prod: ## Arrêter en mode production @echo "🛑 Arrêt de $(PROJECT_NAME) en mode PRODUCTION..." @docker compose -f docker-compose.prod.yml down @echo "✅ $(PROJECT_NAME) production arrêté" restart-prod: ## Redémarrer en mode production @echo "🔄 Redémarrage de $(PROJECT_NAME) en mode PRODUCTION..." @$(MAKE) stop-prod @$(MAKE) prod logs-prod: ## Voir les logs en mode production @echo "📝 Logs de $(PROJECT_NAME) en mode PRODUCTION..." @docker compose -f docker-compose.prod.yml logs -f status-prod: ## Voir le statut en mode production @echo "📊 Statut de $(PROJECT_NAME) en mode PRODUCTION..." @docker compose -f docker-compose.prod.yml ps build-prod: ## Reconstruire en mode production @echo "🔨 Reconstruction de $(PROJECT_NAME) en mode PRODUCTION..." @docker compose -f docker-compose.prod.yml build --no-cache @echo "✅ Reconstruction terminée" # =========================================== # COMMANDES GLOBALES # =========================================== start: local ## Démarrer en mode local (alias) stop: stop-local ## Arrêter en mode local (alias) restart: restart-local ## Redémarrer en mode local (alias) logs: logs-local ## Voir les logs en mode local (alias) all: ## Démarrer tous les environnements @echo "🚀 Démarrage de tous les environnements $(PROJECT_NAME)..." @$(MAKE) local @$(MAKE) dev @$(MAKE) prod @echo "✅ Tous les environnements sont démarrés !" stop-all: ## Arrêter tous les environnements @echo "🛑 Arrêt de tous les environnements $(PROJECT_NAME)..." @$(MAKE) stop-local @$(MAKE) stop-dev @$(MAKE) stop-prod @echo "✅ Tous les environnements sont arrêtés !" status: ## Voir le statut de tous les environnements @echo "📊 Statut de tous les environnements $(PROJECT_NAME)..." @echo "" @echo "🔵 LOCAL:" @$(MAKE) status-local @echo "" @echo "🟡 DEVELOPMENT:" @$(MAKE) status-dev @echo "" @echo "🟢 PRODUCTION:" @$(MAKE) status-prod clean: ## Nettoyer tous les environnements (ATTENTION: supprime les volumes) @echo "🧹 Nettoyage complet de $(PROJECT_NAME)..." @echo "⚠️ ATTENTION: Cette action supprimera tous les volumes et données !" @read -p "Êtes-vous sûr ? (y/N): " -n 1 -r; \ if [[ $$REPLY =~ ^[Yy]$$ ]]; then \ echo ""; \ echo "🧹 Nettoyage en cours..."; \ $(MAKE) stop-all; \ docker compose -f docker-compose.local.yml down -v --remove-orphans; \ docker compose -f docker-compose.dev.yml down -v --remove-orphans; \ docker compose -f docker-compose.prod.yml down -v --remove-orphans; \ docker system prune -f; \ echo "✅ Nettoyage terminé"; \ else \ echo ""; \ echo "❌ Nettoyage annulé"; \ fi # =========================================== # UTILITAIRES # =========================================== test: ## Tester la configuration des environnements @echo "🧪 Test de la configuration $(PROJECT_NAME)..." @if [ -f "test-environments.sh" ]; then \ ./test-environments.sh; \ else \ echo "❌ Script de test non trouvé"; \ fi verify: ## Vérifier le mode Zero-Config @echo "🔍 Vérification Zero-Config $(PROJECT_NAME)..." @if [ -f "verify-zero-config.sh" ]; then \ ./verify-zero-config.sh; \ else \ echo "❌ Script de vérification non trouvé"; \ fi check: ## Vérifier la configuration des fichiers d'environnement @echo "🔍 Vérification des fichiers d'environnement..." @echo "" @echo "📁 Backend:" @for env in local development production; do \ if [ -f "backend/.env.$$env" ]; then \ echo "✅ backend/.env.$$env"; \ else \ echo "❌ backend/.env.$$env manquant"; \ fi; \ done @echo "" @echo "📁 Frontend:" @for env in local development production; do \ if [ -f "frontend/.env.$$env" ]; then \ echo "✅ frontend/.env.$$env"; \ else \ echo "❌ frontend/.env.$$env manquant"; \ fi; \ done @echo "" @echo "📁 Docker Compose:" @for env in local dev prod; do \ if [ -f "docker-compose.$$env.yml" ]; then \ echo "✅ docker-compose.$$env.yml"; \ else \ echo "❌ docker-compose.$$env.yml manquant"; \ fi; \ done