# Makefile: 適用於 docker-compose 專案，自動取用當前資料夾為專案名

COMPOSE := docker-compose
COMPOSE_FILE := docker-compose.yml
PROJECT_NAME := $(notdir $(CURDIR))  # 依照當前資料夾自動命名

# 可選自訂 .env 變數（預設 docker-compose 自動載入）
# ENV_FILE := .env

.PHONY: help up down build restart logs ps exec clean prune

help:
	@echo "🔧 Docker Compose Makefile 指令："
	@echo "  make up         - 啟動所有服務 (背景執行)"
	@echo "  make up-fg      - 前景執行（方便除錯）"
	@echo "  make down       - 停止並移除服務容器"
	@echo "  make build      - 重新建構服務映像檔"
	@echo "  make restart    - 重啟所有服務"
	@echo "  make logs       - 查看服務日誌"
	@echo "  make ps         - 顯示服務狀態"
	@echo "  make exec       - 進入主要容器 shell"
	@echo "  make clean      - 清理所有服務資料（含 volume）"
	@echo "  make prune      - 清除未使用的資源"

up:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) up -d

up-fg:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) up

down:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) down

build:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) build

restart:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) down
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) up -d

logs:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) logs -f --tail=100

ps:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) ps

exec:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) exec app sh

clean:
	$(COMPOSE) -p $(PROJECT_NAME) -f $(COMPOSE_FILE) down -v --remove-orphans

prune:
	docker system prune -af --volumes
