Refactor Docker and configuration files for improved structure and functionality
- 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.
This commit is contained in:
90
Makefile
90
Makefile
@@ -1,7 +1,7 @@
|
||||
.PHONY: help build up down logs clean restart status
|
||||
.PHONY: help build up down logs clean restart status deploy migrate backup
|
||||
|
||||
help: ## Показать справку
|
||||
@echo "🐍 Telegram Bot - Доступные команды (Python 3.9):"
|
||||
@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}'
|
||||
@@ -9,11 +9,12 @@ help: ## Показать справку
|
||||
@echo "📊 Мониторинг:"
|
||||
@echo " Prometheus: http://localhost:9090"
|
||||
@echo " Grafana: http://localhost:3000 (admin/admin)"
|
||||
@echo " Bot Health: http://localhost:8000/health"
|
||||
|
||||
build: ## Собрать все контейнеры с Python 3.9
|
||||
build: ## Собрать все контейнеры
|
||||
docker-compose build
|
||||
|
||||
up: ## Запустить все сервисы с Python 3.9
|
||||
up: ## Запустить все сервисы
|
||||
docker-compose up -d
|
||||
|
||||
down: ## Остановить все сервисы
|
||||
@@ -31,51 +32,90 @@ logs-prometheus: ## Показать логи Prometheus
|
||||
logs-grafana: ## Показать логи Grafana
|
||||
docker-compose logs -f grafana
|
||||
|
||||
restart: ## Перезапустить все сервисы (с пересборкой Python 3.9)
|
||||
restart: ## Перезапустить все сервисы
|
||||
docker-compose down
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
|
||||
restart-bot: ## Перезапустить только бота
|
||||
docker-compose stop telegram-bot
|
||||
docker-compose build telegram-bot
|
||||
docker-compose up -d telegram-bot
|
||||
docker-compose restart telegram-bot
|
||||
|
||||
restart-prometheus: ## Перезапустить только Prometheus
|
||||
docker-compose stop prometheus
|
||||
docker-compose up -d prometheus
|
||||
docker-compose restart prometheus
|
||||
|
||||
restart-grafana: ## Перезапустить только Grafana
|
||||
docker-compose stop grafana
|
||||
docker-compose up -d 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 .venv/bin/python --version || echo "Контейнер не запущен"
|
||||
@docker exec telegram-bot python --version || echo "Контейнер не запущен"
|
||||
|
||||
test-compatibility: ## Тест совместимости с Python 3.8+
|
||||
@echo "🐍 Тестирую совместимость с Python 3.8+..."
|
||||
@python3 test_python38_compatibility.py
|
||||
deploy: ## Полный деплой на продакшен
|
||||
@echo "🚀 Starting production deployment..."
|
||||
@chmod +x scripts/deploy.sh
|
||||
@./scripts/deploy.sh
|
||||
|
||||
clean: ## Очистить все контейнеры и образы Python 3.9
|
||||
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 ## Собрать и запустить все сервисы с Python 3.9
|
||||
@echo "🐍 Python 3.9 контейнер собран и запущен!"
|
||||
start: build up ## Собрать и запустить все сервисы
|
||||
@echo "🐍 Telegram Bot запущен!"
|
||||
@echo "📊 Prometheus: http://localhost:9090"
|
||||
@echo "📈 Grafana: http://localhost:3000 (admin/admin)"
|
||||
@echo "🤖 Бот запущен в контейнере с Python 3.9"
|
||||
@echo "🤖 Bot Health: http://localhost:8000/health"
|
||||
@echo "📝 Логи: make logs"
|
||||
|
||||
start-script: ## Запустить через скрипт start_docker.sh
|
||||
@echo "🐍 Запуск через скрипт start_docker.sh..."
|
||||
@./start_docker.sh
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user