savagedb_bot/wiki/README_DOCKER.md

8.2 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. Настройка конфигурации

Отредактируйте файл docker-compose.yml и замените значения по умолчанию на ваши:

environment:
  # Telegram Bot настройки
  - BOT_TOKEN=your_actual_bot_token_here  # Замените на токен от @BotFather
  - BOT_NAME=SalvageDB Bot
  - ADMIN_USER_ID=your_telegram_user_id   # Замените на ваш Telegram ID
  
  # База данных Oracle
  - db_user=your_actual_db_user           # Замените на пользователя БД
  - db_password=your_actual_db_password   # Замените на пароль БД
  - db_dsn=your_db_host:1521/service_name # Замените на DSN вашей БД

Обязательно замените:

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

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

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

# Устанавливаем права доступа (Linux/macOS)
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)

🔧 Конфигурация

Переменные окружения в docker-compose.yml

Все настройки находятся в файле docker-compose.yml в секции environment:

Переменная Описание Значение по умолчанию
BOT_TOKEN Токен Telegram бота your_bot_token_here ⚠️
BOT_NAME Имя бота SalvageDB Bot
ADMIN_USER_ID ID администратора 123456789 ⚠️
DECODE_PRICE Цена декодирования VIN 1
CHECK_PRICE Цена проверки повреждений 10
IMG_PRICE Цена доступа к фото 100
db_user Пользователь Oracle DB your_db_user ⚠️
db_password Пароль Oracle DB your_db_password ⚠️
db_dsn DSN строка Oracle DB localhost:1521/XEPDB1 ⚠️
DEBUG Режим отладки 0
TZ Часовой пояс 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. Переменные окружения:

    • Замените все placeholder значения в docker-compose.yml
    • Используйте сильные пароли для БД
    • Ограничьте доступ к токену бота
  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 salvagedb-bot python -c "import aiogram; print('aiogram version:', aiogram.__version__)"

Логи отладки

# Включить DEBUG режим (отредактировать docker-compose.yml)
# Изменить: DEBUG=1
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. Убедитесь в правильности переменных в docker-compose.yml
  3. Проверьте подключение к Oracle DB
  4. Проверьте валидность токена бота

🏷️ Теги версий

  • latest - последняя стабильная версия
  • dev - версия для разработки
  • v1.x.x - конкретные релизы