.PHONY: help build up down logs clean restart status deploy migrate backup help: ## Показать справку @echo "🐍 Telegram Bot - Доступные команды (Production Ready):" @echo "" @echo "🔧 Основные команды:" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' @echo "" @echo "📊 Мониторинг:" @echo " Prometheus: http://localhost:9090" @echo " Grafana: http://localhost:3000 (admin/admin)" @echo " Bot Health: http://localhost:8000/health" build: ## Собрать все контейнеры docker-compose build up: ## Запустить все сервисы docker-compose up -d down: ## Остановить все сервисы docker-compose down logs: ## Показать логи всех сервисов docker-compose logs -f logs-bot: ## Показать логи бота docker-compose logs -f telegram-bot logs-prometheus: ## Показать логи Prometheus docker-compose logs -f prometheus logs-grafana: ## Показать логи Grafana docker-compose logs -f grafana restart: ## Перезапустить все сервисы docker-compose down docker-compose up -d restart-bot: ## Перезапустить только бота docker-compose restart telegram-bot restart-prometheus: ## Перезапустить только Prometheus docker-compose restart prometheus restart-grafana: ## Перезапустить только Grafana docker-compose restart grafana status: ## Показать статус контейнеров docker-compose ps health: ## Проверить здоровье сервисов @echo "🏥 Checking service health..." @curl -f http://localhost:8000/health || echo "❌ Bot health check failed" @curl -f http://localhost:9090/-/healthy || echo "❌ Prometheus health check failed" @curl -f http://localhost:3000/api/health || echo "❌ Grafana health check failed" check-python: ## Проверить версию Python в контейнере @echo "🐍 Проверяю версию Python в контейнере..." @docker exec telegram-bot python --version || echo "Контейнер не запущен" deploy: ## Полный деплой на продакшен @echo "🚀 Starting production deployment..." @chmod +x scripts/deploy.sh @./scripts/deploy.sh migrate: ## Миграция с systemctl + cron на Docker @echo "🔄 Starting migration from systemctl to Docker..." @chmod +x scripts/migrate_from_systemctl.sh @sudo ./scripts/migrate_from_systemctl.sh backup: ## Создать backup данных @echo "💾 Creating backup..." @mkdir -p backups @tar -czf "backups/backup-$(date +%Y%m%d-%H%M%S).tar.gz" database/ logs/ .env @echo "✅ Backup created in backups/" restore: ## Восстановить из backup (указать файл: make restore FILE=backup.tar.gz) @echo "🔄 Restoring from backup..." @if [ -z "$(FILE)" ]; then echo "❌ Please specify backup file: make restore FILE=backup.tar.gz"; exit 1; fi @tar -xzf "backups/$(FILE)" -C . @echo "✅ Backup restored" update: ## Обновить бота (pull latest code and redeploy) @echo "📥 Pulling latest changes..." @git pull origin main @echo "🔨 Rebuilding and restarting..." @make restart clean: ## Очистить все контейнеры и образы docker-compose down -v --rmi all docker system prune -f security-scan: ## Сканировать образы на уязвимости @echo "🔍 Scanning Docker images for vulnerabilities..." @docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ -v $(PWD):/workspace \ --workdir /workspace \ anchore/grype:latest \ telegram-helper-bot_telegram-bot:latest || echo "⚠️ Grype not available, skipping scan" monitoring: ## Открыть мониторинг в браузере @echo "📊 Opening monitoring dashboards..." @open http://localhost:3000 || xdg-open http://localhost:3000 || echo "Please open manually: http://localhost:3000" start: build up ## Собрать и запустить все сервисы @echo "🐍 Telegram Bot запущен!" @echo "📊 Prometheus: http://localhost:9090" @echo "📈 Grafana: http://localhost:3000 (admin/admin)" @echo "🤖 Bot Health: http://localhost:8000/health" @echo "📝 Логи: make logs" stop: down ## Остановить все сервисы @echo "🛑 Все сервисы остановлены" test: ## Запустить все тесты @echo "🧪 Запускаю все тесты..." @docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest" test-coverage: ## Запустить все тесты с покрытием @echo "🧪 Запускаю все тесты с покрытием..." @docker-compose run --rm telegram-bot sh -c "pip install --no-cache-dir -r requirements-dev.txt && pytest --cov=helper_bot --cov-report=term-missing"