82 lines
2.6 KiB
Makefile
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)"
|