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