savagedb_bot/README_DOCKER.md

236 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` - конкретные релизы