- Updated `.dockerignore` to include additional development and temporary files, enhancing build efficiency. - Modified `.gitignore` to remove unnecessary entries and streamline ignored files. - Enhanced `docker-compose.yml` with health checks, resource limits, and improved environment variable handling for better service management. - Refactored `Dockerfile.bot` to utilize a multi-stage build for optimized image size and security. - Improved `Makefile` with new commands for deployment, migration, and backup, along with enhanced help documentation. - Updated `requirements.txt` to include new dependencies for environment variable management. - Refactored metrics handling in the bot to ensure proper initialization and collection.
122 lines
4.9 KiB
Makefile
122 lines
4.9 KiB
Makefile
.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"
|