248 lines
8.2 KiB
Markdown
248 lines
8.2 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. Настройка конфигурации
|
||
|
||
Отредактируйте файл `docker-compose.yml` и замените значения по умолчанию на ваши:
|
||
|
||
```yaml
|
||
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. Создание необходимых директорий
|
||
|
||
```bash
|
||
# Создаем директории для данных
|
||
mkdir -p logs images data
|
||
|
||
# Устанавливаем права доступа (Linux/macOS)
|
||
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)
|
||
```
|
||
|
||
## 🔧 Конфигурация
|
||
|
||
### Переменные окружения в 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` - Дополнительные данные
|
||
|
||
## 🛠️ Управление контейнером
|
||
|
||
### Основные команды
|
||
|
||
```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. **Переменные окружения:**
|
||
- Замените все placeholder значения в docker-compose.yml
|
||
- Используйте сильные пароли для БД
|
||
- Ограничьте доступ к токену бота
|
||
|
||
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 salvagedb-bot python -c "import aiogram; print('aiogram version:', aiogram.__version__)"
|
||
```
|
||
|
||
### Логи отладки
|
||
|
||
```bash
|
||
# Включить DEBUG режим (отредактировать docker-compose.yml)
|
||
# Изменить: DEBUG=1
|
||
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. Убедитесь в правильности переменных в docker-compose.yml
|
||
3. Проверьте подключение к Oracle DB
|
||
4. Проверьте валидность токена бота
|
||
|
||
## 🏷️ Теги версий
|
||
|
||
- `latest` - последняя стабильная версия
|
||
- `dev` - версия для разработки
|
||
- `v1.x.x` - конкретные релизы |