Files
quiz_test/docs/INFRASTRUCTURE.md
Andrey K. Choi b0346e4bd7
Some checks reported errors
continuous-integration/drone/push Build encountered an error
cleaning root
2025-09-11 08:18:31 +09:00

218 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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