.PHONY: help build up down restart logs shell clean test lint # По умолчанию показываем help help: @echo "🤖 BUH Bot - Makefile команды:" @echo "" @echo "Development Docker:" @echo " make build - Собрать Docker образ" @echo " make up - Запустить бота (dev)" @echo " make down - Остановить бота" @echo " make restart - Перезапустить бота" @echo " make logs - Показать логи (Ctrl+C для выхода)" @echo " make shell - Войти в контейнер" @echo " make ps - Статус контейнера" @echo "" @echo "Production Docker:" @echo " make prod-build - Собрать и опубликовать образ в registry" @echo " make prod-up - Запустить production stack" @echo " make prod-down - Остановить production stack" @echo " make prod-logs - Логи production" @echo " make prod-ps - Статус production" @echo "" @echo "Разработка:" @echo " make test - Запустить тесты" @echo " make lint - Проверить код (flake8)" @echo " make clean - Очистить временные файлы" @echo " make backup - Создать backup данных" @echo "" @echo "Локальная разработка:" @echo " make venv - Создать виртуальное окружение" @echo " make install - Установить зависимости" @echo " make run - Запустить бота локально" # Docker команды build: @echo "🔨 Сборка Docker образа..." docker-compose build --no-cache up: @echo "🚀 Запуск бота..." @mkdir -p data logs temp_documents docker-compose up -d @echo "✅ Бот запущен!" @echo "📝 Логи: make logs" down: @echo "🛑 Остановка бота..." docker-compose down @echo "✅ Бот остановлен" restart: @echo "🔄 Перезапуск бота..." docker-compose restart @echo "✅ Бот перезапущен" logs: @echo "📝 Логи бота (Ctrl+C для выхода):" docker-compose logs -f shell: @echo "🐚 Вход в контейнер..." docker-compose exec buh_bot bash ps: @echo "📊 Статус контейнера:" docker-compose ps # Разработка test: @echo "🧪 Запуск тестов..." python -m pytest tests/ -v lint: @echo "🔍 Проверка кода..." flake8 bot.py modules/ --max-line-length=79 clean: @echo "🧹 Очистка временных файлов..." find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true find . -type f -name "*.pyc" -delete 2>/dev/null || true find . -type f -name "*.pyo" -delete 2>/dev/null || true find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true rm -rf .pytest_cache 2>/dev/null || true rm -rf htmlcov 2>/dev/null || true rm -rf temp_documents/* 2>/dev/null || true @echo "✅ Очистка завершена" backup: @echo "💾 Создание backup..." @mkdir -p backups tar -czf backups/backup-$$(date +%Y%m%d-%H%M%S).tar.gz data/ logs/ @echo "✅ Backup создан в backups/" # Локальная разработка venv: @echo "🐍 Создание виртуального окружения..." python3 -m venv venv @echo "✅ Виртуальное окружение создано" @echo "Активируйте: source venv/bin/activate" install: @echo "📦 Установка зависимостей..." pip install -r requirements.txt @echo "✅ Зависимости установлены" run: @echo "🚀 Запуск бота локально..." python bot.py # Дополнительные команды update: @echo "🔄 Обновление бота..." git pull docker-compose build docker-compose up -d @echo "✅ Бот обновлён и перезапущен" stats: @echo "📊 Статистика использования ресурсов:" docker stats buh_bot --no-stream check-env: @echo "🔍 Проверка .env файла..." @if [ ! -f .env ]; then \ echo "❌ Файл .env не найден!"; \ echo "Создайте: cp .env.example .env"; \ exit 1; \ fi @if ! grep -q "TELEGRAM_BOT_TOKEN=.*[^_here]" .env; then \ echo "⚠️ TELEGRAM_BOT_TOKEN не настроен!"; \ else \ echo "✅ .env настроен"; \ fi # Production команды prod-build: @echo "🔨 Сборка и публикация production образа..." @chmod +x build-image.sh ./build-image.sh prod-up: @echo "🚀 Запуск production stack..." @if [ ! -f .env.prod ]; then \ echo "❌ Файл .env.prod не найден!"; \ echo "Создайте: cp .env.prod.example .env.prod"; \ exit 1; \ fi @chmod +x deploy-prod.sh ./deploy-prod.sh prod-down: @echo "🛑 Остановка production stack..." docker-compose -f docker-compose.prod.yml --env-file .env.prod down prod-logs: @echo "📝 Логи production (Ctrl+C для выхода):" docker-compose -f docker-compose.prod.yml --env-file .env.prod logs -f prod-ps: @echo "📊 Статус production:" docker-compose -f docker-compose.prod.yml --env-file .env.prod ps prod-restart: @echo "🔄 Перезапуск production..." docker-compose -f docker-compose.prod.yml --env-file .env.prod restart prod-pull: @echo "📥 Обновление образов..." docker-compose -f docker-compose.prod.yml --env-file .env.prod pull prod-backup: @echo "💾 Создание production backup..." @mkdir -p /var/backups/buh_bot sudo tar -czf /var/backups/buh_bot/backup-$$(date +%Y%m%d-%H%M%S).tar.gz \ /var/lib/buh_bot/data /var/log/buh_bot @echo "✅ Backup создан в /var/backups/buh_bot/"