savagedb_bot/README_DOCKER.md

7.4 KiB
Raw Blame History

SalvageDB Telegram Bot - Docker Deployment

Полная инструкция по развертыванию SalvageDB Telegram Bot в Docker контейнере.

📋 Требования

  • Docker Engine 20.10+
  • Docker Compose 2.0+
  • Минимум 512 MB RAM
  • Доступ к Oracle Database

🚀 Быстрый старт

1. Подготовка переменных окружения

Скопируйте файл с примером и настройте переменные:

cp env.example .env
nano .env

Обязательно настройте следующие переменные:

  • BOT_TOKEN - токен от @BotFather
  • DB_USER, DB_PASSWORD, DB_DSN - настройки Oracle DB
  • ADMIN_USER_ID - ваш Telegram ID для админ-функций

2. Создание необходимых директорий

# Создаем директории для данных
mkdir -p logs images data

# Устанавливаем права доступа
chmod 755 logs images data

3. Запуск контейнера

# Сборка и запуск
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 - Дополнительные данные

🛠️ Управление контейнером

Основные команды

# Запуск
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

Мониторинг

# Проверка здоровья контейнера
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

# Проверка 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()
"

Проблемы с ботом

# Проверка токена бота
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__)"

Логи отладки

# Включить DEBUG режим
echo "DEBUG=1" >> .env
docker-compose restart

# Просмотр подробных логов
docker-compose logs -f --tail=100 salvagedb-bot

🔄 Обновление

# Остановить контейнер
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 - конкретные релизы