Files
server/Makefile
2025-12-17 12:33:42 -03:00

82 lines
2.6 KiB
Makefile

# 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)"