# Makefile untuk mengelola Docker commands - Optimized Version .PHONY: help build up down restart logs clean dev prod dev-build dev-up dev-down dev-logs # Color codes untuk output yang lebih menarik GREEN := \033[0;32m YELLOW := \033[1;33m RED := \033[0;31m BLUE := \033[0;34m PURPLE := \033[0;35m CYAN := \033[0;36m NC := \033[0m # No Color # Project variables PROJECT_NAME := rijig_backend DEV_COMPOSE_FILE := docker-compose.dev.yml # Default target help: @echo "$(GREEN)๐Ÿš€ $(PROJECT_NAME) - Available Commands:$(NC)" @echo "" @echo "$(YELLOW)๐Ÿ“ฆ Development Commands (Hot Reload):$(NC)" @echo " $(CYAN)dev$(NC) - Complete development setup (build + up)" @echo " $(CYAN)dev-build$(NC) - Build development images" @echo " $(CYAN)dev-up$(NC) - Start development environment" @echo " $(CYAN)dev-down$(NC) - Stop development environment" @echo " $(CYAN)dev-restart$(NC) - Restart development services" @echo " $(CYAN)dev-logs$(NC) - Show development logs (all services)" @echo " $(CYAN)dev-clean$(NC) - Clean development environment" @echo "" @echo "$(YELLOW)๐Ÿ› ๏ธ Development Utilities:$(NC)" @echo " $(CYAN)dev-app-logs$(NC) - Show only app logs" @echo " $(CYAN)dev-db-logs$(NC) - Show only database logs" @echo " $(CYAN)dev-shell$(NC) - Access app container shell" @echo " $(CYAN)dev-status$(NC) - Check development services status" @echo " $(CYAN)psql$(NC) - Connect to development PostgreSQL" @echo " $(CYAN)redis-cli$(NC) - Connect to development Redis" @echo "" @echo "$(YELLOW)๐Ÿงน Maintenance:$(NC)" @echo " $(RED)clean-all$(NC) - Clean everything (containers, volumes, images)" @echo " $(RED)system-prune$(NC) - Clean Docker system" @echo " $(CYAN)stats$(NC) - Show container resource usage" # ====================== # DEVELOPMENT COMMANDS # ====================== # Quick development setup (recommended) dev: dev-build dev-up @echo "$(GREEN)โœจ Development environment ready!$(NC)" @echo "$(BLUE)๐ŸŒ Services:$(NC)" @echo " โ€ข API Server: $(CYAN)http://localhost:7000$(NC)" @echo " โ€ข PostgreSQL: $(CYAN)localhost:5433$(NC)" @echo " โ€ข Redis: $(CYAN)localhost:6378$(NC)" @echo " โ€ข pgAdmin: $(CYAN)http://localhost:8080$(NC) (admin@rijig.com / admin123)" @echo " โ€ข Redis Commander: $(CYAN)http://localhost:8081$(NC)" @echo "" @echo "$(GREEN)๐Ÿ”ฅ Hot reload is active! Edit your Go files and see changes automatically$(NC)" dev-build: @echo "$(YELLOW)๐Ÿ”จ Building development images...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) build --no-cache @echo "$(GREEN)โœ… Development images built successfully!$(NC)" dev-up: @echo "$(YELLOW)๐Ÿš€ Starting development services...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) up -d @echo "$(GREEN)โœ… Development services started!$(NC)" @make dev-status dev-down: @echo "$(RED)๐Ÿ›‘ Stopping development services...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) down @echo "$(GREEN)โœ… Development services stopped!$(NC)" dev-restart: @echo "$(YELLOW)๐Ÿ”„ Restarting development services...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) restart @echo "$(GREEN)โœ… Development services restarted!$(NC)" dev-logs: @echo "$(CYAN)๐Ÿ“‹ Showing development logs (Ctrl+C to exit)...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) logs -f --tail=100 dev-clean: @echo "$(RED)๐Ÿงน Cleaning development environment...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) down -v --remove-orphans @echo "$(GREEN)โœ… Development environment cleaned!$(NC)" # ====================== # DEVELOPMENT UTILITIES # ====================== dev-app-logs: @echo "$(CYAN)๐Ÿ“‹ Showing app logs (Ctrl+C to exit)...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) logs -f --tail=50 app dev-db-logs: @echo "$(CYAN)๐Ÿ“‹ Showing database logs (Ctrl+C to exit)...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) logs -f --tail=50 postgres dev-shell: @echo "$(CYAN)๐Ÿš Accessing app container shell...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) exec app sh dev-status: @echo "$(BLUE)๐Ÿ“Š Development services status:$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) ps psql: @echo "$(CYAN)๐Ÿ˜ Connecting to development PostgreSQL...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) exec postgres psql -U postgres -d apirijig_v2 redis-cli: @echo "$(CYAN)โšก Connecting to development Redis...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) exec redis redis-cli # ====================== # MAINTENANCE COMMANDS # ====================== clean-all: @echo "$(RED)๐Ÿงน Performing complete cleanup...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) down -v --remove-orphans 2>/dev/null || true @echo "$(YELLOW)๐Ÿ—‘๏ธ Removing unused containers, networks, and images...$(NC)" @docker system prune -a -f --volumes @echo "$(GREEN)โœ… Complete cleanup finished!$(NC)" system-prune: @echo "$(YELLOW)๐Ÿ—‘๏ธ Cleaning Docker system...$(NC)" @docker system prune -f @echo "$(GREEN)โœ… Docker system cleaned!$(NC)" stats: @echo "$(BLUE)๐Ÿ“ˆ Container resource usage:$(NC)" @docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}" # ====================== # QUICK COMMANDS # ====================== # App only restart (faster for development) app-restart: @echo "$(YELLOW)๐Ÿ”„ Restarting app container only...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) restart app @echo "$(GREEN)โœ… App container restarted!$(NC)" # Check if containers are healthy health-check: @echo "$(BLUE)๐Ÿฅ Checking container health...$(NC)" @docker compose -f $(DEV_COMPOSE_FILE) ps --format "table {{.Name}}\t{{.Status}}"