cleaning root
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
2025-09-11 08:18:31 +09:00
parent fcf27c1639
commit b0346e4bd7
26 changed files with 352 additions and 159 deletions

217
docs/INFRASTRUCTURE.md Normal file
View File

@@ -0,0 +1,217 @@
# 🐳 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 <repository-url>
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/)
---
**Готово для продакшена**: Все компоненты настроены для надёжного развёртывания и мониторинга!