include .env export # Compose file selection based on ENVIRONMENT ifeq ($(ENVIRONMENT),dev) COMPOSE_FILES := -f docker-compose.yml -f docker-compose.dev.yml else COMPOSE_FILES := -f docker-compose.yml endif DC := docker compose $(COMPOSE_FILES) .PHONY: help build up down restart logs status clean rebuild dev prod help: ## Show this help @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \ awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' build: ## Build container image $(DC) build up: ## Start services (detached) $(DC) up -d --build @sleep 2 $(DC) logs --tail=20 down: ## Stop services $(DC) down restart: ## Restart services $(DC) down $(DC) up -d --build @sleep 2 $(DC) logs --tail=20 logs: ## Show service logs $(DC) logs -f status: ## Show running containers $(DC) ps clean: ## Remove containers, images, and volumes $(DC) down --rmi local -v rebuild: ## Full rebuild (no cache) $(DC) build --no-cache $(DC) up -d @sleep 2 $(DC) logs --tail=20 dev: ## Switch to dev mode and start @sed -i 's/^ENVIRONMENT=.*/ENVIRONMENT=dev/' .env @echo "Switched to dev mode" $(MAKE) restart prod: ## Switch to prod mode and start @sed -i 's/^ENVIRONMENT=.*/ENVIRONMENT=prod/' .env @echo "Switched to prod mode" $(MAKE) restart