# Makefile for DNSBlock # Variables DOCKER_COMPOSE = docker-compose DB_CONTAINER = dnsblock-db APP_CONTAINER = dnsblock-app MYSQL_CMD = docker exec -i $(DB_CONTAINER) mysql -uroot -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" "$$(grep DB_NAME .env | cut -d '=' -f2)" --default-character-set=utf8mb4 # Colors GREEN=\033[0;32m NC=\033[0m # No Color .PHONY: help setup up down restart logs shell import reset help: @echo "Sistema de Gerenciamento DNSBlock" @echo "Comandos disponíveis:" @echo " make setup - Configura o arquivo .env inicial" @echo " make up - Inicia os containers em background" @echo " make down - Para e remove os containers" @echo " make restart - Reinicia os containers" @echo " make logs - Exibe logs dos containers" @echo " make shell - Abre um shell no container da aplicação" @echo " make import - Importa o schema e seeds do banco de dados (Corrige Encoding)" @echo " make reset - [PERIGO] Reseta tudo: down, apaga dados, up e importa" setup: @if [ ! -f .env ]; then \ cp .env.example .env; \ echo "$(GREEN).env criado a partir do exemplo. Edite-o com suas configurações!$(NC)"; \ else \ echo "Arquivo .env já existe."; \ fi up: @echo "$(GREEN)Iniciando containers...$(NC)" $(DOCKER_COMPOSE) up -d down: @echo "$(GREEN)Parando containers...$(NC)" $(DOCKER_COMPOSE) down restart: down up logs: $(DOCKER_COMPOSE) logs -f shell: docker exec -it $(APP_CONTAINER) bash import: @echo "$(GREEN)Importando banco de dados com correção de encoding (UTF-8)...$(NC)" @# Aguarda o banco estar pronto (simples sleep, idealmente seria um wait-for-it) @sleep 5 @$(MYSQL_CMD) < database/schema.sql @$(MYSQL_CMD) < database/seeds.sql @echo "$(GREEN)Importação concluída com sucesso!$(NC)" reset: @echo "$(GREEN)Resetando ambiente...$(NC)" $(DOCKER_COMPOSE) down sudo rm -rf mysql_data $(DOCKER_COMPOSE) up -d @echo "Aguardando inicialização do banco de dados..." @sleep 10 make import backup: @echo "$(GREEN)Gerando backup do banco de dados...$(NC)" @mkdir -p backups @docker exec $(DB_CONTAINER) mysqldump -u root -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" --all-databases > backups/backup_$$(date +%Y%m%d_%H%M%S).sql @echo "$(GREEN)Backup salvo em backups/backup_$$(date +%Y%m%d_%H%M%S).sql$(NC)" restore: @if [ -z "$(FILE)" ]; then \ echo "Erro: Especifique o arquivo de backup com FILE=caminho/do/arquivo.sql"; \ exit 1; \ fi @echo "$(GREEN)Restaurando banco de dados a partir de $(FILE)...$(NC)" @docker exec -i $(DB_CONTAINER) mysql -u root -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" < $(FILE) @echo "$(GREEN)Restauração concluída!$(NC)"