# Makefile для LogBoard+ # Автор: Сергей Антропов # Сайт: https://devops.org.ru .PHONY: help setup build up down restart logs clean status ps shell # Переменные COMPOSE_FILE = docker-compose.yml SERVICE_NAME = logboard # Цвета для вывода GREEN = \033[0;32m YELLOW = \033[1;33m RED = \033[0;31m NC = \033[0m # No Color help: ## Показать справку по командам @echo "$(GREEN)LogBoard+ - Команды управления$(NC)" @echo "" @echo "$(YELLOW)Основные команды:$(NC)" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}' @echo "" @echo "$(YELLOW)Примеры использования:$(NC)" @echo " make setup # Настроить переменные окружения" @echo " make build # Собрать образ" @echo " make up # Запустить сервисы" @echo " make down # Остановить сервисы" @echo " make restart # Перезапустить сервисы" @echo " make logs # Показать логи" setup: ## Настроить переменные окружения (копировать env.example в .env) @echo "$(GREEN)Настройка переменных окружения...$(NC)" @if [ ! -f .env ]; then \ cp env.example .env; \ echo "$(GREEN)Файл .env создан из env.example$(NC)"; \ echo "$(YELLOW)Не забудьте отредактировать .env под свои нужды!$(NC)"; \ echo "$(YELLOW)Особенно важны переменные безопасности:$(NC)"; \ echo "$(YELLOW) - LOGBOARD_PASS$(NC)"; \ echo "$(YELLOW) - SECRET_KEY$(NC)"; \ echo "$(YELLOW) - ENCRYPTION_KEY$(NC)"; \ else \ echo "$(YELLOW)Файл .env уже существует.$(NC)"; \ echo "$(YELLOW)Для пересоздания удалите .env и запустите make setup$(NC)"; \ fi build: ## Собрать Docker образ @echo "$(GREEN)Сборка Docker образа...$(NC)" docker compose -f $(COMPOSE_FILE) build --no-cache @echo "$(GREEN)Образ собран успешно!$(NC)" up: ## Запустить сервисы в фоновом режиме (с правами root) @echo "$(GREEN)Запуск сервисов с правами root...$(NC)" @mkdir -p snapshots docker compose -f $(COMPOSE_FILE) up -d @echo "$(GREEN)Сервисы запущены с правами root!$(NC)" @if [ -f .env ]; then \ PORT=$$(grep "^LOGBOARD_PORT=" .env | cut -d'=' -f2 || echo "9001"); \ echo "$(YELLOW)Приложение доступно по адресу: http://localhost:$$PORT$(NC)"; \ else \ echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"; \ fi down: ## Остановить и удалить сервисы (с правами root) @echo "$(YELLOW)Остановка сервисов с правами root...$(NC)" docker compose -f $(COMPOSE_FILE) down @echo "$(GREEN)Сервисы с правами root остановлены!$(NC)" restart: ## Перезапустить сервисы (с правами root) @echo "$(YELLOW)Перезапуск сервисов с правами root...$(NC)" docker compose -f $(COMPOSE_FILE) restart @echo "$(GREEN)Сервисы с правами root перезапущены!$(NC)" logs: ## Показать логи сервисов @echo "$(GREEN)Логи сервисов:$(NC)" docker compose -f $(COMPOSE_FILE) logs -f clean: ## Остановить сервисы и удалить образы @echo "$(RED)Очистка проекта...$(NC)" docker compose -f $(COMPOSE_FILE) down --rmi all --volumes --remove-orphans @echo "$(GREEN)Очистка завершена!$(NC)" status: ## Показать статус сервисов @echo "$(GREEN)Статус сервисов:$(NC)" docker compose -f $(COMPOSE_FILE) ps ps: status ## Алиас для команды status shell: ## Подключиться к контейнеру сервиса @echo "$(GREEN)Подключение к контейнеру $(SERVICE_NAME)...$(NC)" docker compose -f $(COMPOSE_FILE) exec $(SERVICE_NAME) /bin/bash start: up ## Алиас для команды up stop: down ## Алиас для команды down rebuild: ## Пересобрать и запустить сервисы @echo "$(YELLOW)Пересборка и запуск сервисов...$(NC)" docker compose -f $(COMPOSE_FILE) down docker compose -f $(COMPOSE_FILE) build --no-cache @mkdir -p snapshots docker compose -f $(COMPOSE_FILE) up -d @echo "$(GREEN)Сервисы пересобраны и запущены!$(NC)" @if [ -f .env ]; then \ PORT=$$(grep "^LOGBOARD_PORT=" .env | cut -d'=' -f2 || echo "9001"); \ echo "$(YELLOW)Приложение доступно по адресу: http://localhost:$$PORT$(NC)"; \ else \ echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"; \ fi config: ## Показать конфигурацию с подставленными переменными окружения @echo "$(GREEN)Конфигурация Docker Compose с переменными окружения:$(NC)" docker compose -f $(COMPOSE_FILE) config validate: ## Проверить синтаксис docker-compose.yml @echo "$(GREEN)Проверка синтаксиса docker-compose.yml...$(NC)" docker compose -f $(COMPOSE_FILE) config --quiet @echo "$(GREEN)Синтаксис корректен!$(NC)" env-check: ## Проверить переменные окружения @echo "$(GREEN)Проверка переменных окружения...$(NC)" @if [ -f .env ]; then \ echo "$(GREEN)Файл .env найден$(NC)"; \ echo "$(YELLOW)Основные переменные:$(NC)"; \ grep -E "^(LOGBOARD_PORT|LOGBOARD_USER|LOGBOARD_PASS|SECRET_KEY|ENCRYPTION_KEY)=" .env || echo "$(RED)Переменные не найдены$(NC)"; \ else \ echo "$(RED)Файл .env не найден. Запустите make setup$(NC)"; \ fi