logboard/Makefile
Сергей Антропов e80f665470 feat: major improvements and fixes
- Fixed Docker permissions issue by running as root user
- Added DEBUG_MODE support with conditional Swagger docs and auto-reload
- Created start.sh script for conditional Uvicorn execution
- Removed verbose debug logs from WebSocket status endpoint
- Added comprehensive screenshots to documentation
- Enhanced help tooltip with full-screen modal design
- Added theme switcher to error page
- Updated documentation with local development and Docker benefits
- Fixed WebSocket status display issues
- Improved hotkey functionality and documentation
- Added detailed project descriptions for local dev and Docker users

Technical improvements:
- Dockerfile: removed appuser switch, simplified permissions
- docker-compose.yml: kept user: 0:0 for Docker socket access
- app.py: removed debug prints, added DEBUG_MODE support
- templates: enhanced UI/UX with better tooltips and themes
- docs: comprehensive updates with new screenshots and descriptions
2025-08-19 13:01:32 +03:00

168 lines
7.7 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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|DEBUG_MODE)=" .env || echo "$(RED)Переменные не найдены$(NC)"; \
else \
echo "$(RED)Файл .env не найден. Запустите make setup$(NC)"; \
fi
debug-on: ## Включить режим отладки
@echo "$(GREEN)Включение режима отладки...$(NC)"
@if [ -f .env ]; then \
sed -i 's/^DEBUG_MODE=.*/DEBUG_MODE=true/' .env; \
echo "$(GREEN)Режим отладки включен!$(NC)"; \
echo "$(YELLOW)Перезапустите сервисы: make restart$(NC)"; \
else \
echo "$(RED)Файл .env не найден. Запустите make setup$(NC)"; \
fi
debug-off: ## Выключить режим отладки
@echo "$(GREEN)Выключение режима отладки...$(NC)"
@if [ -f .env ]; then \
sed -i 's/^DEBUG_MODE=.*/DEBUG_MODE=false/' .env; \
echo "$(GREEN)Режим отладки выключен!$(NC)"; \
echo "$(YELLOW)Перезапустите сервисы: make restart$(NC)"; \
else \
echo "$(RED)Файл .env не найден. Запустите make setup$(NC)"; \
fi
debug-status: ## Показать статус режима отладки
@echo "$(GREEN)Статус режима отладки:$(NC)"
@if [ -f .env ]; then \
DEBUG_MODE=$$(grep "^DEBUG_MODE=" .env | cut -d'=' -f2 || echo "false"); \
if [ "$$DEBUG_MODE" = "true" ]; then \
echo "$(GREEN)DEBUG_MODE: ВКЛЮЧЕН$(NC)"; \
echo "$(YELLOW)Доступны:$(NC)"; \
echo "$(YELLOW) - Auto-reload при изменении кода$(NC)"; \
echo "$(YELLOW) - Swagger UI: /docs$(NC)"; \
echo "$(YELLOW) - ReDoc: /redoc$(NC)"; \
else \
echo "$(RED)DEBUG_MODE: ВЫКЛЮЧЕН$(NC)"; \
echo "$(YELLOW)Продакшен режим$(NC)"; \
fi; \
else \
echo "$(RED)Файл .env не найден$(NC)"; \
fi