# 🐳 Quiz Bot - Docker & CI/CD Infrastructure Эта структура описывает все файлы Docker и CI/CD инфраструктуры для проекта Quiz Bot. ## 📁 Структура проекта ``` quiz_test/ ├── 🐳 Docker Files │ ├── Dockerfile # Multi-stage Docker образ │ ├── .dockerignore # Исключения для Docker build │ ├── docker-compose.yml # Development compose │ └── docker-compose.prod.yml # Production compose │ ├── 🚀 CI/CD Pipeline │ ├── .drone.yml # Drone CI/CD pipeline │ └── scripts/ │ ├── dev.sh # Development helper script │ └── deploy.sh # Production deployment script │ ├── ⚙️ Configuration Files │ ├── .env.example # Environment variables template │ ├── .env.prod.example # Production env template │ ├── .gitignore # Git exclusions (updated) │ └── Makefile # Build automation (extended) │ ├── 📚 Documentation │ ├── DOCKER_README.md # Docker & CI/CD documentation │ ├── README.md # Main project documentation │ └── QUICKSTART.md # Quick start guide │ └── 🤖 Application Code ├── src/ │ ├── bot.py # Main bot application │ ├── database/ │ ├── services/ │ └── utils/ ├── config/ ├── data/ # Database and CSV files └── requirements.txt # Python dependencies ``` ## 🎯 Ключевые компоненты ### 🐳 Docker Infrastructure 1. **Dockerfile** - Multi-stage сборка - Builder stage: Установка зависимостей - Production stage: Минимальный runtime образ - Security: Непривилегированный пользователь - Health checks: Автоматическая проверка работоспособности 2. **docker-compose.yml** - Development environment - Автоматическая сборка - Volume mounting для разработки - Network isolation - Resource limits 3. **docker-compose.prod.yml** - Production environment - Pre-built image usage - Persistent volumes - Restart policies - Production resource limits ### 🚀 CI/CD Pipeline (Drone) **Pipeline этапы:** 1. **Prepare** - Подготовка окружения 2. **Lint** - Code quality (Black, isort, flake8) 3. **Test** - Unit тестирование 4. **Security** - Безопасность (Safety, Bandit) 5. **Build** - Docker image сборка 6. **Test Docker** - Тестирование контейнера 7. **Deploy Staging** - Staging деплой (develop branch) 8. **Deploy Production** - Production деплой (main branch) 9. **Notify** - Уведомления о результате ### 🔧 Helper Scripts 1. **scripts/dev.sh** - Development automation ```bash ./scripts/dev.sh build # Build image ./scripts/dev.sh run # Start development ./scripts/dev.sh test # Run tests ./scripts/dev.sh logs # View logs ./scripts/dev.sh cleanup # Clean resources ``` 2. **scripts/deploy.sh** - Production deployment ```bash ./scripts/deploy.sh deploy # Deploy to production ./scripts/deploy.sh monitor # Real-time monitoring ./scripts/deploy.sh rollback # Rollback to previous version ./scripts/deploy.sh logs # Production logs ``` ### ⚙️ Environment Configuration 1. **.env.example** - Development template 2. **.env.prod.example** - Production template 3. **Drone Secrets** - CI/CD секреты - `bot_token_staging` - `bot_token_production` - `notification_webhook` ### 📊 Monitoring & Logging 1. **Health Checks** - Контейнер автоматически проверяется 2. **Resource Monitoring** - CPU, Memory usage tracking 3. **Log Aggregation** - Centralized logging 4. **Alerting** - Webhook notifications ## 🚀 Быстрый старт ### Development ```bash # 1. Клонировать репозиторий git clone cd quiz-bot # 2. Настроить переменные окружения cp .env.example .env # Заполнить BOT_TOKEN # 3. Запустить через Docker make docker-dev # или ./scripts/dev.sh run # 4. Просмотр логов make docker-logs ``` ### Production Deployment ```bash # 1. Настроить production переменные cp .env.prod.example .env.prod # Заполнить production значения # 2. Деплой make docker-deploy # или ./scripts/deploy.sh deploy # 3. Мониторинг make docker-monitor ``` ### CI/CD Setup ```bash # 1. Настроить Drone секреты drone secret add repo/quiz-bot bot_token_production "YOUR_PROD_TOKEN" drone secret add repo/quiz-bot bot_token_staging "YOUR_STAGE_TOKEN" # 2. Активировать репозиторий в Drone UI # 3. Push в main/develop ветку запустит pipeline ``` ## 🛡️ Security Features 1. **Multi-stage builds** - Минимальный attack surface 2. **Non-root user** - Непривилегированное выполнение 3. **Security scanning** - Автоматическая проверка уязвимостей 4. **Secret management** - Drone секреты для токенов 5. **Network isolation** - Docker networks 6. **Resource limits** - Контроль использования ресурсов ## 📈 Performance Optimizations 1. **Multi-stage builds** - Меньший размер образа 2. **Layer caching** - Быстрая пересборка 3. **Resource limits** - Предотвращение resource exhaustion 4. **Health checks** - Быстрое обнаружение проблем 5. **Restart policies** - Автоматическое восстановление ## 🔍 Troubleshooting ### Общие проблемы и решения 1. **Образ не собирается** ```bash # Проверить Docker daemon docker info # Очистить build cache docker builder prune -a ``` 2. **Контейнер не запускается** ```bash # Проверить логи docker logs quiz-bot # Проверить переменные окружения docker inspect quiz-bot | grep -A 10 "Env" ``` 3. **Pipeline падает** ```bash # Локальное тестирование make ci-test # Проверить Drone логи drone build logs repo/quiz-bot BUILD_NUMBER ``` ## 📚 Дополнительные ресурсы - [Docker Documentation](https://docs.docker.com/) - [Drone CI Documentation](https://docs.drone.io/) - [Docker Compose Reference](https://docs.docker.com/compose/) - [Multi-stage builds](https://docs.docker.com/build/building/multi-stage/) --- ✅ **Готово для продакшена**: Все компоненты настроены для надёжного развёртывания и мониторинга!