autocomit
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
# LDPv2 - Makefile for Container Management
|
||||
# Quick commands for building, running, and managing the unified container
|
||||
|
||||
.PHONY: help build up down restart logs clean test backup
|
||||
|
||||
# Default target
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
# Colors for output
|
||||
GREEN := \033[0;32m
|
||||
YELLOW := \033[0;33m
|
||||
RED := \033[0;31m
|
||||
NC := \033[0m # No Color
|
||||
|
||||
##@ General
|
||||
|
||||
help: ## Display this help message
|
||||
@echo "$(GREEN)LDPv2 - Docker Management Commands$(NC)"
|
||||
@echo ""
|
||||
@awk 'BEGIN {FS = ":.*##"; printf "Usage: make $(YELLOW)<target>$(NC)\n"} /^[a-zA-Z_-]+:.*?##/ { printf " $(YELLOW)%-15s$(NC) %s\n", $$1, $$2 } /^##@/ { printf "\n$(GREEN)%s$(NC)\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
||||
|
||||
##@ Development
|
||||
|
||||
build: ## Build all containers
|
||||
@echo "$(GREEN)Building containers...$(NC)"
|
||||
docker-compose build
|
||||
|
||||
build-no-cache: ## Build all containers without cache
|
||||
@echo "$(GREEN)Building containers (no cache)...$(NC)"
|
||||
docker-compose build --no-cache
|
||||
|
||||
up: ## Start all containers
|
||||
@echo "$(GREEN)Starting containers...$(NC)"
|
||||
docker-compose up
|
||||
|
||||
up-build: ## Build and start all containers
|
||||
@echo "$(GREEN)Building and starting containers...$(NC)"
|
||||
docker-compose up --build
|
||||
|
||||
up-d: ## Start all containers in background
|
||||
@echo "$(GREEN)Starting containers in background...$(NC)"
|
||||
docker-compose up -d
|
||||
|
||||
down: ## Stop and remove all containers
|
||||
@echo "$(YELLOW)Stopping containers...$(NC)"
|
||||
docker-compose down
|
||||
|
||||
down-v: ## Stop containers and remove volumes (WARNING: deletes database!)
|
||||
@echo "$(RED)Stopping containers and removing volumes...$(NC)"
|
||||
@read -p "This will delete the database. Are you sure? [y/N] " -n 1 -r; \
|
||||
echo; \
|
||||
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
|
||||
docker-compose down -v; \
|
||||
fi
|
||||
|
||||
restart: ## Restart all containers
|
||||
@echo "$(YELLOW)Restarting containers...$(NC)"
|
||||
docker-compose restart
|
||||
|
||||
restart-app: ## Restart only the app container
|
||||
@echo "$(YELLOW)Restarting app container...$(NC)"
|
||||
docker-compose restart app
|
||||
|
||||
##@ Logs and Monitoring
|
||||
|
||||
logs: ## Show logs from all containers
|
||||
docker-compose logs -f
|
||||
|
||||
logs-app: ## Show logs from app container only
|
||||
docker-compose logs -f app
|
||||
|
||||
logs-postgres: ## Show logs from postgres container only
|
||||
docker-compose logs -f postgres
|
||||
|
||||
logs-backend: ## Show backend application logs
|
||||
@echo "$(GREEN)Showing backend logs (Ctrl+C to exit)...$(NC)"
|
||||
docker exec ldpv2-app tail -f /var/log/supervisor/backend.log
|
||||
|
||||
logs-nginx: ## Show nginx logs
|
||||
@echo "$(GREEN)Showing nginx logs (Ctrl+C to exit)...$(NC)"
|
||||
docker exec ldpv2-app tail -f /var/log/supervisor/nginx.log
|
||||
|
||||
status: ## Show status of all services
|
||||
@echo "$(GREEN)Container Status:$(NC)"
|
||||
@docker ps --filter "name=ldpv2" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||
@echo ""
|
||||
@echo "$(GREEN)Process Status (in app container):$(NC)"
|
||||
@docker exec ldpv2-app supervisorctl status || echo "$(RED)App container not running$(NC)"
|
||||
|
||||
health: ## Check health of all containers
|
||||
@echo "$(GREEN)Health Check:$(NC)"
|
||||
@docker inspect ldpv2-app --format='App Container: {{.State.Health.Status}}' 2>/dev/null || echo "$(RED)App container not running$(NC)"
|
||||
@docker inspect ldpv2-postgres --format='Database: {{.State.Health.Status}}' 2>/dev/null || echo "$(RED)Database container not running$(NC)"
|
||||
|
||||
##@ Database
|
||||
|
||||
db-shell: ## Connect to PostgreSQL shell
|
||||
@echo "$(GREEN)Connecting to database (use \q to exit)...$(NC)"
|
||||
docker exec -it ldpv2-postgres psql -U ldpv2_user -d ldpv2
|
||||
|
||||
db-backup: ## Backup database to backup.sql
|
||||
@echo "$(GREEN)Backing up database...$(NC)"
|
||||
docker exec ldpv2-postgres pg_dump -U ldpv2_user ldpv2 > backup_$(shell date +%Y%m%d_%H%M%S).sql
|
||||
@echo "$(GREEN)Backup complete!$(NC)"
|
||||
|
||||
db-restore: ## Restore database from backup.sql
|
||||
@if [ ! -f backup.sql ]; then \
|
||||
echo "$(RED)Error: backup.sql not found$(NC)"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo "$(YELLOW)Restoring database...$(NC)"
|
||||
docker exec -i ldpv2-postgres psql -U ldpv2_user ldpv2 < backup.sql
|
||||
@echo "$(GREEN)Restore complete!$(NC)"
|
||||
|
||||
##@ Testing and Debugging
|
||||
|
||||
shell-app: ## Open shell in app container
|
||||
@echo "$(GREEN)Opening shell in app container...$(NC)"
|
||||
docker exec -it ldpv2-app /bin/sh
|
||||
|
||||
shell-db: ## Open shell in database container
|
||||
@echo "$(GREEN)Opening shell in database container...$(NC)"
|
||||
docker exec -it ldpv2-postgres /bin/sh
|
||||
|
||||
test-backend: ## Test backend health endpoint
|
||||
@echo "$(GREEN)Testing backend health...$(NC)"
|
||||
@curl -s http://localhost/api/actuator/health | jq . || echo "$(RED)Backend not responding$(NC)"
|
||||
|
||||
test-api: ## Test API with sample request
|
||||
@echo "$(GREEN)Testing API (login)...$(NC)"
|
||||
@curl -s -X POST http://localhost/api/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username":"admin","password":"admin123"}' | jq . || echo "$(RED)API test failed$(NC)"
|
||||
|
||||
test-nginx: ## Test nginx configuration
|
||||
@echo "$(GREEN)Testing nginx configuration...$(NC)"
|
||||
docker exec ldpv2-app nginx -t
|
||||
|
||||
##@ Maintenance
|
||||
|
||||
clean: ## Remove all stopped containers and unused images
|
||||
@echo "$(YELLOW)Cleaning up...$(NC)"
|
||||
docker-compose down
|
||||
docker system prune -f
|
||||
@echo "$(GREEN)Cleanup complete!$(NC)"
|
||||
|
||||
clean-all: ## Remove everything including volumes (WARNING: deletes database!)
|
||||
@echo "$(RED)This will remove all containers, images, and volumes$(NC)"
|
||||
@read -p "Are you sure? [y/N] " -n 1 -r; \
|
||||
echo; \
|
||||
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
|
||||
docker-compose down -v; \
|
||||
docker system prune -af; \
|
||||
echo "$(GREEN)Full cleanup complete!$(NC)"; \
|
||||
fi
|
||||
|
||||
reset: ## Complete reset (rebuild everything)
|
||||
@echo "$(YELLOW)Resetting everything...$(NC)"
|
||||
$(MAKE) down
|
||||
$(MAKE) build-no-cache
|
||||
$(MAKE) up-d
|
||||
@echo "$(GREEN)Reset complete!$(NC)"
|
||||
|
||||
##@ Production
|
||||
|
||||
prod-deploy: ## Deploy for production (builds and starts in background)
|
||||
@echo "$(GREEN)Deploying for production...$(NC)"
|
||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build -d
|
||||
@echo "$(GREEN)Production deployment complete!$(NC)"
|
||||
|
||||
prod-logs: ## Show production logs
|
||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml logs -f
|
||||
|
||||
prod-down: ## Stop production deployment
|
||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml down
|
||||
|
||||
##@ Quick Actions
|
||||
|
||||
quick-start: up-build ## Quick start (build and run in foreground)
|
||||
|
||||
quick-restart: ## Quick restart (useful after code changes)
|
||||
$(MAKE) down
|
||||
$(MAKE) up-build
|
||||
|
||||
reload-backend: ## Reload backend without full restart
|
||||
@echo "$(YELLOW)Reloading backend...$(NC)"
|
||||
docker exec ldpv2-app supervisorctl restart backend
|
||||
@echo "$(GREEN)Backend reloaded!$(NC)"
|
||||
|
||||
reload-nginx: ## Reload nginx configuration
|
||||
@echo "$(YELLOW)Reloading nginx...$(NC)"
|
||||
docker exec ldpv2-app nginx -s reload
|
||||
@echo "$(GREEN)Nginx reloaded!$(NC)"
|
||||
|
||||
##@ Information
|
||||
|
||||
info: ## Show container information
|
||||
@echo "$(GREEN)=== LDPv2 Container Information ===$(NC)"
|
||||
@echo ""
|
||||
@echo "$(YELLOW)Access Points:$(NC)"
|
||||
@echo " Frontend: http://localhost"
|
||||
@echo " API Docs: http://localhost/api/swagger-ui/index.html"
|
||||
@echo " Health: http://localhost/api/actuator/health"
|
||||
@echo ""
|
||||
@echo "$(YELLOW)Default Credentials:$(NC)"
|
||||
@echo " Username: admin"
|
||||
@echo " Password: admin123"
|
||||
@echo ""
|
||||
@echo "$(YELLOW)Container Status:$(NC)"
|
||||
@$(MAKE) status
|
||||
|
||||
version: ## Show version information
|
||||
@echo "$(GREEN)LDPv2 Version Information$(NC)"
|
||||
@echo "Docker: $$(docker --version)"
|
||||
@echo "Docker Compose: $$(docker-compose --version)"
|
||||
@echo "Java (in container): $$(docker exec ldpv2-app java -version 2>&1 | head -n 1 || echo 'Not running')"
|
||||
@echo "Node (build): $$(node --version 2>/dev/null || echo 'Not available')"
|
||||
Reference in New Issue
Block a user