233 lines
8.1 KiB
Makefile
Executable File
233 lines
8.1 KiB
Makefile
Executable File
.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
|