187 lines
5.4 KiB
Markdown
187 lines
5.4 KiB
Markdown
# 🐳 Запуск MY Uploader Bot через Docker
|
||
|
||
## 📋 Требования
|
||
|
||
- Docker и Docker Compose установлены
|
||
- Telegram Bot токены от @BotFather
|
||
|
||
## ⚡ Быстрый запуск
|
||
|
||
### 1. Настройка переменных окружения
|
||
|
||
Отредактируйте файл [`.env`](.env) - **ОБЯЗАТЕЛЬНО** заполните Telegram токены:
|
||
|
||
```bash
|
||
# ОБЯЗАТЕЛЬНО: Получите токены у @BotFather в Telegram
|
||
TELEGRAM_API_KEY=123456789:YOUR_ACTUAL_BOT_TOKEN_HERE
|
||
CLIENT_TELEGRAM_API_KEY=987654321:YOUR_ACTUAL_CLIENT_BOT_TOKEN_HERE
|
||
```
|
||
|
||
Остальные настройки можно оставить по умолчанию для тестирования.
|
||
|
||
### 2. Запуск базовых сервисов
|
||
|
||
```bash
|
||
# Базовые сервисы (PostgreSQL + Redis + Application)
|
||
docker-compose -f docker-compose.new.yml up -d postgres redis app
|
||
|
||
# Проверка статуса
|
||
docker-compose -f docker-compose.new.yml ps
|
||
```
|
||
|
||
### 3. Проверка работы
|
||
|
||
```bash
|
||
# Проверка логов приложения
|
||
docker-compose -f docker-compose.new.yml logs -f app
|
||
|
||
# Проверка health endpoints
|
||
curl http://localhost:15100/health
|
||
curl http://localhost:15100/api/my/health
|
||
```
|
||
|
||
### 4. Веб-интерфейс
|
||
|
||
- **Основное приложение**: http://localhost:15100
|
||
- **MY Network Monitor**: http://localhost:15100/api/my/monitor/
|
||
- **Метрики**: http://localhost:9090
|
||
|
||
## 🔧 Дополнительные профили
|
||
|
||
### Мониторинг (Prometheus + Grafana)
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.new.yml --profile monitoring up -d
|
||
|
||
# Доступ:
|
||
# Prometheus: http://localhost:9091
|
||
# Grafana: http://localhost:3001 (admin/admin)
|
||
```
|
||
|
||
### Отдельные сервисы (альтернативная архитектура)
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.new.yml --profile separate-services up -d
|
||
```
|
||
|
||
### Прокси с SSL (Traefik)
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.new.yml --profile proxy up -d
|
||
|
||
# Настройте DOMAIN в .env перед запуском
|
||
```
|
||
|
||
### Автоматические бэкапы
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.new.yml --profile backup up -d
|
||
```
|
||
|
||
## 🔍 Диагностика
|
||
|
||
### Просмотр логов
|
||
|
||
```bash
|
||
# Все сервисы
|
||
docker-compose -f docker-compose.new.yml logs -f
|
||
|
||
# Конкретный сервис
|
||
docker-compose -f docker-compose.new.yml logs -f app
|
||
docker-compose -f docker-compose.new.yml logs -f postgres
|
||
docker-compose -f docker-compose.new.yml logs -f redis
|
||
```
|
||
|
||
### Проверка состояния базы данных
|
||
|
||
```bash
|
||
# Подключение к PostgreSQL
|
||
docker-compose -f docker-compose.new.yml exec postgres psql -U uploader -d uploader_bot
|
||
|
||
# Проверка таблиц
|
||
\dt
|
||
|
||
# Выход
|
||
\q
|
||
```
|
||
|
||
### Проверка Redis
|
||
|
||
```bash
|
||
# Подключение к Redis
|
||
docker-compose -f docker-compose.new.yml exec redis redis-cli
|
||
|
||
# Проверка ключей
|
||
KEYS *
|
||
|
||
# Выход
|
||
exit
|
||
```
|
||
|
||
## 🛠 Разработка
|
||
|
||
### Пересборка приложения
|
||
|
||
```bash
|
||
# После изменения кода
|
||
docker-compose -f docker-compose.new.yml build app
|
||
docker-compose -f docker-compose.new.yml up -d app
|
||
```
|
||
|
||
### Выполнение команд внутри контейнера
|
||
|
||
```bash
|
||
# Bash в контейнере приложения
|
||
docker-compose -f docker-compose.new.yml exec app bash
|
||
|
||
# Миграции базы данных
|
||
docker-compose -f docker-compose.new.yml exec app python -m alembic upgrade head
|
||
|
||
# Проверка MY Network
|
||
docker-compose -f docker-compose.new.yml exec app python -c "from app.core.my_network import test_connection; test_connection()"
|
||
```
|
||
|
||
## 🛑 Остановка
|
||
|
||
```bash
|
||
# Остановка всех сервисов
|
||
docker-compose -f docker-compose.new.yml down
|
||
|
||
# Остановка с удалением volumes (ВНИМАНИЕ: удалит все данные!)
|
||
docker-compose -f docker-compose.new.yml down -v
|
||
|
||
# Очистка всех docker ресурсов
|
||
docker system prune -a
|
||
```
|
||
|
||
## 📊 MY Network Protocol
|
||
|
||
После запуска доступны MY Network endpoints:
|
||
|
||
- **Конфигурация bootstrap**: http://localhost:15100/api/my/bootstrap/config
|
||
- **Статус сети**: http://localhost:15100/api/my/health
|
||
- **Мониторинг ASCII**: http://localhost:15100/api/my/monitor/
|
||
- **Метрики**: http://localhost:15100/api/my/metrics
|
||
|
||
## ⚠ Важные переменные в .env
|
||
|
||
| Переменная | Описание | Обязательна |
|
||
|------------|----------|-------------|
|
||
| `TELEGRAM_API_KEY` | Основной бот токен | ✅ ДА |
|
||
| `CLIENT_TELEGRAM_API_KEY` | Клиентский бот токен | ✅ ДА |
|
||
| `SECRET_KEY` | Секретный ключ (32+ символов) | ✅ ДА |
|
||
| `JWT_SECRET_KEY` | JWT секрет (32+ символов) | ✅ ДА |
|
||
| `POSTGRES_PASSWORD` | Пароль базы данных | ❌ НЕТ |
|
||
| `DEBUG` | Режим отладки | ❌ НЕТ |
|
||
| `TESTNET` | Тестовая сеть TON | ❌ НЕТ |
|
||
|
||
## 🚀 Готово к продакшену
|
||
|
||
Для продакшена дополнительно настройте:
|
||
|
||
1. Сильные пароли в `.env`
|
||
2. `DEBUG=false`
|
||
3. Правильный `DOMAIN`
|
||
4. `TESTNET=false` для основной сети TON
|
||
5. Валидные `TONCENTER_API_KEY`
|
||
6. SSL сертификаты через Traefik профиль |