# SalvageDB Telegram Bot - Docker Deployment Полная инструкция по развертыванию SalvageDB Telegram Bot в Docker контейнере. ## 📋 Требования - Docker Engine 20.10+ - Docker Compose 2.0+ - Минимум 512 MB RAM - Доступ к Oracle Database ## 🚀 Быстрый старт ### 1. Подготовка переменных окружения Скопируйте файл с примером и настройте переменные: ```bash cp env.example .env nano .env ``` Обязательно настройте следующие переменные: - `BOT_TOKEN` - токен от @BotFather - `DB_USER`, `DB_PASSWORD`, `DB_DSN` - настройки Oracle DB - `ADMIN_USER_ID` - ваш Telegram ID для админ-функций ### 2. Создание необходимых директорий ```bash # Создаем директории для данных mkdir -p logs images data # Устанавливаем права доступа chmod 755 logs images data ``` ### 3. Запуск контейнера ```bash # Сборка и запуск docker-compose up --build -d # Проверка статуса docker-compose ps # Просмотр логов docker-compose logs -f salvagedb-bot ``` ## 📁 Структура проекта ``` salvagedb_bot/ ├── Dockerfile # Конфигурация Docker образа ├── docker-compose.yml # Orchestration конфигурация ├── docker-entrypoint.sh # Скрипт инициализации ├── .dockerignore # Исключения для Docker ├── env.example # Пример переменных окружения ├── requirements.txt # Python зависимости ├── main.py # Основной код бота ├── db.py # Модуль работы с БД ├── middlewares/ # Middleware компоненты ├── logs/ # Логи приложения (volume) ├── images/ # Изображения автомобилей (volume) └── data/ # Дополнительные данные (volume) ``` ## 🔧 Конфигурация ### Переменные окружения | Переменная | Описание | Значение по умолчанию | |-----------|----------|----------------------| | `BOT_TOKEN` | Токен Telegram бота | **Обязательно** | | `BOT_NAME` | Имя бота | `SalvageDB Bot` | | `ADMIN_USER_ID` | ID администратора | **Обязательно** | | `DECODE_PRICE` | Цена декодирования VIN | `1` | | `CHECK_PRICE` | Цена проверки повреждений | `10` | | `IMG_PRICE` | Цена доступа к фото | `100` | | `DB_USER` | Пользователь Oracle DB | **Обязательно** | | `DB_PASSWORD` | Пароль Oracle DB | **Обязательно** | | `DB_DSN` | DSN строка Oracle DB | **Обязательно** | | `DEBUG` | Режим отладки | `0` | | `TIMEZONE` | Часовой пояс | `UTC` | ### Volumes - `./logs:/home/salvagebot/app/logs` - Логи приложения - `./images:/home/salvagebot/app/images:ro` - Изображения (read-only) - `./data:/home/salvagebot/app/data` - Дополнительные данные ## 🛠️ Управление контейнером ### Основные команды ```bash # Запуск docker-compose up -d # Остановка docker-compose down # Перезапуск docker-compose restart # Пересборка и запуск docker-compose up --build -d # Просмотр логов в реальном времени docker-compose logs -f salvagedb-bot # Подключение к контейнеру docker-compose exec salvagedb-bot bash # Просмотр статуса docker-compose ps ``` ### Мониторинг ```bash # Проверка здоровья контейнера docker-compose exec salvagedb-bot python -c "print('Bot is healthy!')" # Статистика ресурсов docker stats salvagedb-telegram-bot # Информация о контейнере docker inspect salvagedb-telegram-bot ``` ## 📊 Логирование ### Структура логов Логи сохраняются в директории `./logs/`: - `salvagedb_bot.log` - текущий лог файл - `salvagedb_bot.log.YYYY-MM-DD` - архивные логи ### Конфигурация логирования - **Ротация:** ежедневно в полночь - **Хранение:** 30 дней - **Формат:** `YYYY-MM-DD HH:MM:SS - module - LEVEL - message` - **Уровни:** INFO, WARNING, ERROR ## 🔒 Безопасность ### Рекомендации 1. **Переменные окружения:** - Никогда не коммитьте `.env` файл - Используйте сильные пароли для БД - Ограничьте доступ к токену бота 2. **Сетевая безопасность:** - Контейнер работает в изолированной сети - Нет открытых портов (только исходящие соединения) 3. **Файловая система:** - Приложение работает под непривилегированным пользователем - Read-only монтирование для изображений ## 🐛 Устранение неполадок ### Проблемы с Oracle ```bash # Проверка Oracle client в контейнере docker-compose exec salvagedb-bot python -c "import oracledb; print(oracledb.version)" # Тест подключения к БД docker-compose exec salvagedb-bot python -c " import oracledb import os conn = oracledb.connect(user=os.getenv('DB_USER'), password=os.getenv('DB_PASSWORD'), dsn=os.getenv('DB_DSN')) print('Connection successful!') conn.close() " ``` ### Проблемы с ботом ```bash # Проверка токена бота docker-compose exec salvagedb-bot python -c " import os print('Bot token length:', len(os.getenv('BOT_TOKEN', ''))) " # Проверка aiogram docker-compose exec salvagebot-bot python -c "import aiogram; print('aiogram version:', aiogram.__version__)" ``` ### Логи отладки ```bash # Включить DEBUG режим echo "DEBUG=1" >> .env docker-compose restart # Просмотр подробных логов docker-compose logs -f --tail=100 salvagedb-bot ``` ## 🔄 Обновление ```bash # Остановить контейнер docker-compose down # Обновить код git pull # Пересобрать и запустить docker-compose up --build -d # Проверить статус docker-compose logs -f salvagedb-bot ``` ## 📞 Поддержка При возникновении проблем: 1. Проверьте логи: `docker-compose logs salvagedb-bot` 2. Убедитесь в правильности переменных окружения 3. Проверьте подключение к Oracle DB 4. Проверьте валидность токена бота ## 🏷️ Теги версий - `latest` - последняя стабильная версия - `dev` - версия для разработки - `v1.x.x` - конкретные релизы