BUH_bot/docs/DOCKER_CHANGELOG.md
Игорь Надеин 9491811425 docs: Add comprehensive documentation
Documentation Structure:
- MULTI_USER_AUTH.md (250 lines): Multi-user authentication guide
  - Architecture overview
  - Encryption mechanism (Fernet/AES-128)
  - User flow diagrams
  - API reference
  - Security considerations

- MIGRATION_GUIDE.md (120 lines): Migration instructions
  - Single-user to multi-user migration
  - Step-by-step guide
  - Data backup procedures
  - Rollback instructions

- DOCKER_QUICKSTART.md (100 lines): Quick Docker start
  - Prerequisites
  - 5-minute setup guide
  - Common commands
  - Troubleshooting

- DOCKER_GUIDE.md (400 lines): Complete Docker guide
  - Architecture details
  - Development workflow
  - Volume management
  - Network configuration
  - Resource limits
  - Logging and debugging

- PRODUCTION_DEPLOYMENT.md (500 lines): Production operations
  - 7-service architecture diagram
  - Deployment procedures
  - Monitoring setup (Prometheus, Grafana)
  - Management commands
  - Backup/restore
  - Security checklist
  - Scaling strategies
  - Troubleshooting guide

- CHANGELOG.md: Version history and release notes
2025-11-03 14:21:39 +03:00

7.1 KiB
Raw Blame History

Docker Containerization - 3 ноября 2025

🐳 Добавлена поддержка Docker

Что добавлено

  1. Dockerfile

    • Базовый образ: Python 3.11-slim
    • Многоступенчатая установка зависимостей
    • Volumes для персистентных данных
    • Healthcheck для мониторинга
    • Оптимизирован размер образа
  2. docker-compose.yml

    • Полная оркестрация сервиса
    • Управление ресурсами (CPU/RAM)
    • Автоматический перезапуск
    • Логирование с ротацией
    • Изолированная сеть
  3. Скрипты запуска

    • start.sh / start.bat - запуск (Linux/Windows)
    • stop.sh / stop.bat - остановка (Linux/Windows)
    • Автоматическое создание директорий
    • Проверка наличия .env
  4. Makefile

    • 20+ команд для управления
    • make up - запуск
    • make down - остановка
    • make logs - логи
    • make backup - создание backup
    • make test / make lint - разработка
  5. Документация

    • docs/DOCKER_GUIDE.md - полное руководство (120+ строк)
    • docs/DOCKER_QUICKSTART.md - быстрый старт
    • Примеры использования
    • Troubleshooting
  6. Обновлён user_manager.py

    • Поддержка переменной DATA_DIR
    • Автоматическое создание директорий
    • Совместимость с Docker volumes

Изменения в существующих файлах

.env.example:

  • Удалены MOYSKLAD_LOGIN и MOYSKLAD_PASSWORD
  • Добавлена TZ=Europe/Moscow для Docker
  • Комментарий о многопользовательской системе

.gitignore:

  • Добавлена директория data/ (для Docker volumes)
  • Добавлена директория logs/

README.md:

  • Добавлен раздел "Вариант 1: Docker (рекомендуется)"
  • Обновлены инструкции по запуску
  • Ссылки на Docker документацию

Структура директорий для Docker

BUH_bot/
├── Dockerfile
├── docker-compose.yml
├── .dockerignore
├── Makefile
├── start.sh / start.bat
├── stop.sh / stop.bat
├── data/                    # Volume: пользовательские данные
│   ├── users.json
│   └── .encryption_key
├── logs/                    # Volume: логи
└── temp_documents/          # Volume: временные файлы

Volumes (персистентные данные)

  1. ./data/ → /app/data

    • users.json - зашифрованные credentials пользователей
    • .encryption_key - ключ шифрования
  2. ./logs/ → /app/logs

    • Логи работы бота
  3. ./temp_documents/ → /app/temp_documents

    • Временные XML/Excel файлы

Конфигурация контейнера

Ресурсы:

  • CPU: 0.5 cores (limit), 0.25 cores (reservation)
  • RAM: 512MB (limit), 256MB (reservation)

Restart policy:

  • unless-stopped - автоматический перезапуск кроме явной остановки

Healthcheck:

  • Интервал: 30 секунд
  • Timeout: 10 секунд
  • Retries: 3
  • Start period: 40 секунд

Логирование:

  • Driver: json-file
  • Max size: 10MB per file
  • Max files: 3 (30MB total)

Использование

Быстрый старт (Windows):

copy .env.example .env
notepad .env
start.bat

Быстрый старт (Linux/Mac):

cp .env.example .env
nano .env
chmod +x start.sh
./start.sh

С Makefile:

make help      # Показать команды
make up        # Запустить
make logs      # Логи
make down      # Остановить
make backup    # Backup данных

Преимущества Docker-версии

  1. Изоляция

    • Независимое окружение
    • Нет конфликтов с системными пакетами
  2. Простота развертывания

    • Один образ для всех платформ
    • Не нужно устанавливать Python и зависимости
  3. Управление ресурсами

    • Ограничение CPU/RAM
    • Предсказуемое потребление ресурсов
  4. Надёжность

    • Автоматический перезапуск
    • Healthcheck для мониторинга
    • Логирование с ротацией
  5. Масштабируемость

    • Легко добавить reverse proxy (nginx)
    • Готово к Docker Swarm / Kubernetes

Совместимость

  • ✅ Windows 10/11 (Docker Desktop)
  • ✅ macOS (Docker Desktop)
  • ✅ Linux (Docker Engine)
  • ✅ Windows Server 2016+
  • ✅ Raspberry Pi (ARM)

Миграция с локальной версии

Существующие пользователи могут:

  1. Продолжить использовать локальную версию (python bot.py)
  2. Перейти на Docker:
    # Скопировать данные
    mkdir data
    mv users.json data/
    mv .encryption_key data/
    
    # Запустить в Docker
    ./start.sh
    

Данные полностью совместимы!

Следующие шаги

Планируется добавить:

  • Docker Hub образ для быстрого деплоя
  • Kubernetes манифесты
  • CI/CD pipeline (GitHub Actions)
  • Мониторинг (Prometheus + Grafana)
  • Nginx reverse proxy для webhook режима

Тестирование

Протестировано на:

  • ✅ Windows 11 + Docker Desktop
  • ✅ Ubuntu 22.04 + Docker Engine
  • ✅ macOS Sonoma + Docker Desktop

Безопасность

  • Credentials не попадают в образ (через .dockerignore)
  • Volumes для чувствительных данных
  • Logs с ротацией (предотвращение переполнения диска)
  • Изолированная сеть

Размер образа

  • Базовый образ: ~150MB
  • С зависимостями: ~300MB
  • Итого: ~300MB (сжатый ~120MB)

Дополнительные материалы


Автор: Docker containerization
Дата: 3 ноября 2025
Версия: 1.0