Some checks reported errors
continuous-integration/drone/push Build encountered an error
7.3 KiB
7.3 KiB
🐳 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
-
Dockerfile - Multi-stage сборка
- Builder stage: Установка зависимостей
- Production stage: Минимальный runtime образ
- Security: Непривилегированный пользователь
- Health checks: Автоматическая проверка работоспособности
-
docker-compose.yml - Development environment
- Автоматическая сборка
- Volume mounting для разработки
- Network isolation
- Resource limits
-
docker-compose.prod.yml - Production environment
- Pre-built image usage
- Persistent volumes
- Restart policies
- Production resource limits
🚀 CI/CD Pipeline (Drone)
Pipeline этапы:
- Prepare - Подготовка окружения
- Lint - Code quality (Black, isort, flake8)
- Test - Unit тестирование
- Security - Безопасность (Safety, Bandit)
- Build - Docker image сборка
- Test Docker - Тестирование контейнера
- Deploy Staging - Staging деплой (develop branch)
- Deploy Production - Production деплой (main branch)
- Notify - Уведомления о результате
🔧 Helper Scripts
-
scripts/dev.sh - Development automation
./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 -
scripts/deploy.sh - Production deployment
./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
- .env.example - Development template
- .env.prod.example - Production template
- Drone Secrets - CI/CD секреты
bot_token_stagingbot_token_productionnotification_webhook
📊 Monitoring & Logging
- Health Checks - Контейнер автоматически проверяется
- Resource Monitoring - CPU, Memory usage tracking
- Log Aggregation - Centralized logging
- Alerting - Webhook notifications
🚀 Быстрый старт
Development
# 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
# 1. Настроить production переменные
cp .env.prod.example .env.prod
# Заполнить production значения
# 2. Деплой
make docker-deploy
# или
./scripts/deploy.sh deploy
# 3. Мониторинг
make docker-monitor
CI/CD Setup
# 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
- Multi-stage builds - Минимальный attack surface
- Non-root user - Непривилегированное выполнение
- Security scanning - Автоматическая проверка уязвимостей
- Secret management - Drone секреты для токенов
- Network isolation - Docker networks
- Resource limits - Контроль использования ресурсов
📈 Performance Optimizations
- Multi-stage builds - Меньший размер образа
- Layer caching - Быстрая пересборка
- Resource limits - Предотвращение resource exhaustion
- Health checks - Быстрое обнаружение проблем
- Restart policies - Автоматическое восстановление
🔍 Troubleshooting
Общие проблемы и решения
-
Образ не собирается
# Проверить Docker daemon docker info # Очистить build cache docker builder prune -a -
Контейнер не запускается
# Проверить логи docker logs quiz-bot # Проверить переменные окружения docker inspect quiz-bot | grep -A 10 "Env" -
Pipeline падает
# Локальное тестирование make ci-test # Проверить Drone логи drone build logs repo/quiz-bot BUILD_NUMBER
📚 Дополнительные ресурсы
✅ Готово для продакшена: Все компоненты настроены для надёжного развёртывания и мониторинга!