working version
This commit is contained in:
252
Makefile
Normal file → Executable file
252
Makefile
Normal file → Executable file
@@ -1,56 +1,232 @@
|
||||
.PHONY: help start stop restart logs clean build install
|
||||
.PHONY: help local dev prod start stop restart logs status build clean test verify
|
||||
|
||||
# Configuration
|
||||
PROJECT_NAME := LeDiscord
|
||||
|
||||
help: ## Afficher cette aide
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
||||
@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"
|
||||
|
||||
start: ## Démarrer l'application
|
||||
./start.sh
|
||||
# ===========================================
|
||||
# LOCAL (développement sur votre machine)
|
||||
# ===========================================
|
||||
|
||||
stop: ## Arrêter l'application
|
||||
./stop.sh
|
||||
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"
|
||||
|
||||
restart: ## Redémarrer l'application
|
||||
./stop.sh
|
||||
./start.sh
|
||||
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é"
|
||||
|
||||
logs: ## Afficher les logs
|
||||
docker compose logs -f
|
||||
restart-local: ## Redémarrer en mode local
|
||||
@echo "🔄 Redémarrage de $(PROJECT_NAME) en mode LOCAL..."
|
||||
@$(MAKE) stop-local
|
||||
@$(MAKE) local
|
||||
|
||||
logs-backend: ## Afficher les logs du backend
|
||||
docker compose logs -f backend
|
||||
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
|
||||
|
||||
logs-frontend: ## Afficher les logs du frontend
|
||||
docker compose logs -f frontend
|
||||
status-local: ## Voir le statut en mode local
|
||||
@echo "📊 Statut de $(PROJECT_NAME) en mode LOCAL..."
|
||||
@docker compose -f docker-compose.local.yml ps
|
||||
|
||||
logs-db: ## Afficher les logs de la base de données
|
||||
docker compose logs -f postgres
|
||||
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"
|
||||
|
||||
build: ## Reconstruire les images Docker
|
||||
docker compose build
|
||||
# ===========================================
|
||||
# DEVELOPMENT (dev.lediscord.com)
|
||||
# ===========================================
|
||||
|
||||
clean: ## Nettoyer les conteneurs et volumes
|
||||
docker compose down -v
|
||||
rm -rf backend/__pycache__
|
||||
rm -rf backend/**/__pycache__
|
||||
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"
|
||||
|
||||
install: ## Installer les dépendances localement (dev)
|
||||
cd backend && pip install -r requirements.txt
|
||||
cd frontend && npm install
|
||||
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é"
|
||||
|
||||
dev-backend: ## Lancer le backend en mode développement
|
||||
cd backend && uvicorn app:app --reload --host 0.0.0.0 --port 8000
|
||||
restart-dev: ## Redémarrer en mode développement
|
||||
@echo "🔄 Redémarrage de $(PROJECT_NAME) en mode DEVELOPMENT..."
|
||||
@$(MAKE) stop-dev
|
||||
@$(MAKE) dev
|
||||
|
||||
dev-frontend: ## Lancer le frontend en mode développement
|
||||
cd frontend && npm run 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
|
||||
|
||||
shell-backend: ## Ouvrir un shell dans le conteneur backend
|
||||
docker compose exec backend /bin/bash
|
||||
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
|
||||
|
||||
shell-db: ## Ouvrir psql dans le conteneur PostgreSQL
|
||||
docker compose exec postgres psql -U lediscord_user -d lediscord
|
||||
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"
|
||||
|
||||
backup-db: ## Sauvegarder la base de données
|
||||
docker compose exec postgres pg_dump -U lediscord_user lediscord > backup_$$(date +%Y%m%d_%H%M%S).sql
|
||||
# ===========================================
|
||||
# PRODUCTION (lediscord.com)
|
||||
# ===========================================
|
||||
|
||||
status: ## Afficher le statut des conteneurs
|
||||
docker compose ps
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user