uploader-bot/DOCKER_SETUP.md

187 lines
5.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.

# 🐳 Запуск 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 профиль