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
7.1 KiB
7.1 KiB
Docker Containerization - 3 ноября 2025
🐳 Добавлена поддержка Docker
Что добавлено
-
Dockerfile
- Базовый образ: Python 3.11-slim
- Многоступенчатая установка зависимостей
- Volumes для персистентных данных
- Healthcheck для мониторинга
- Оптимизирован размер образа
-
docker-compose.yml
- Полная оркестрация сервиса
- Управление ресурсами (CPU/RAM)
- Автоматический перезапуск
- Логирование с ротацией
- Изолированная сеть
-
Скрипты запуска
start.sh/start.bat- запуск (Linux/Windows)stop.sh/stop.bat- остановка (Linux/Windows)- Автоматическое создание директорий
- Проверка наличия .env
-
Makefile
- 20+ команд для управления
make up- запускmake down- остановкаmake logs- логиmake backup- создание backupmake test/make lint- разработка
-
Документация
docs/DOCKER_GUIDE.md- полное руководство (120+ строк)docs/DOCKER_QUICKSTART.md- быстрый старт- Примеры использования
- Troubleshooting
-
Обновлён 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 (персистентные данные)
-
./data/→/app/datausers.json- зашифрованные credentials пользователей.encryption_key- ключ шифрования
-
./logs/→/app/logs- Логи работы бота
-
./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-версии
-
Изоляция
- Независимое окружение
- Нет конфликтов с системными пакетами
-
Простота развертывания
- Один образ для всех платформ
- Не нужно устанавливать Python и зависимости
-
Управление ресурсами
- Ограничение CPU/RAM
- Предсказуемое потребление ресурсов
-
Надёжность
- Автоматический перезапуск
- Healthcheck для мониторинга
- Логирование с ротацией
-
Масштабируемость
- Легко добавить reverse proxy (nginx)
- Готово к Docker Swarm / Kubernetes
Совместимость
- ✅ Windows 10/11 (Docker Desktop)
- ✅ macOS (Docker Desktop)
- ✅ Linux (Docker Engine)
- ✅ Windows Server 2016+
- ✅ Raspberry Pi (ARM)
Миграция с локальной версии
Существующие пользователи могут:
- Продолжить использовать локальную версию (
python bot.py) - Перейти на 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)
Дополнительные материалы
- docs/DOCKER_GUIDE.md - Полное руководство
- docs/DOCKER_QUICKSTART.md - Быстрый старт
- docs/MULTI_USER_AUTH.md - Система авторизации
- docs/MIGRATION_GUIDE.md - Миграция на многопользовательскую версию
Автор: Docker containerization
Дата: 3 ноября 2025
Версия: 1.0