7.4 KiB
7.4 KiB
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- токен от @BotFatherDB_USER,DB_PASSWORD,DB_DSN- настройки Oracle DBADMIN_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
🔒 Безопасность
Рекомендации
-
Переменные окружения:
- Никогда не коммитьте
.envфайл - Используйте сильные пароли для БД
- Ограничьте доступ к токену бота
- Никогда не коммитьте
-
Сетевая безопасность:
- Контейнер работает в изолированной сети
- Нет открытых портов (только исходящие соединения)
-
Файловая система:
- Приложение работает под непривилегированным пользователем
- 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
📞 Поддержка
При возникновении проблем:
- Проверьте логи:
docker-compose logs salvagedb-bot - Убедитесь в правильности переменных окружения
- Проверьте подключение к Oracle DB
- Проверьте валидность токена бота
🏷️ Теги версий
latest- последняя стабильная версияdev- версия для разработкиv1.x.x- конкретные релизы