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

7.3 KiB
Raw Blame History

🐳 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

    ./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

    ./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

# 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

  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. Образ не собирается

    # Проверить Docker daemon
    docker info
    
    # Очистить build cache
    docker builder prune -a
    
  2. Контейнер не запускается

    # Проверить логи
    docker logs quiz-bot
    
    # Проверить переменные окружения
    docker inspect quiz-bot | grep -A 10 "Env"
    
  3. Pipeline падает

    # Локальное тестирование
    make ci-test
    
    # Проверить Drone логи
    drone build logs repo/quiz-bot BUILD_NUMBER
    

📚 Дополнительные ресурсы


Готово для продакшена: Все компоненты настроены для надёжного развёртывания и мониторинга!