175 lines
3.8 KiB
Markdown
175 lines
3.8 KiB
Markdown
|
|
# 🐳 Запуск через Docker Compose
|
|||
|
|
|
|||
|
|
## Быстрый старт
|
|||
|
|
|
|||
|
|
1. **Клонировать репозиторий:**
|
|||
|
|
```bash
|
|||
|
|
git clone http://103.137.249.134:3000/NANDI/tg_bot_language.git
|
|||
|
|
cd tg_bot_language
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Настроить переменные окружения:**
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
nano .env # или используйте любой редактор
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Заполните обязательные поля в `.env`:
|
|||
|
|
```env
|
|||
|
|
BOT_TOKEN=ваш_telegram_bot_token
|
|||
|
|
OPENAI_API_KEY=ваш_openai_api_key
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **Запустить:**
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **Проверить логи:**
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs -f bot
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Управление
|
|||
|
|
|
|||
|
|
### Запуск
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Остановка
|
|||
|
|
```bash
|
|||
|
|
docker-compose down
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Перезапуск
|
|||
|
|
```bash
|
|||
|
|
docker-compose restart
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Пересборка после изменений
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d --build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Просмотр логов
|
|||
|
|
```bash
|
|||
|
|
# Все сервисы
|
|||
|
|
docker-compose logs -f
|
|||
|
|
|
|||
|
|
# Только бот
|
|||
|
|
docker-compose logs -f bot
|
|||
|
|
|
|||
|
|
# Только база данных
|
|||
|
|
docker-compose logs -f db
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Статус контейнеров
|
|||
|
|
```bash
|
|||
|
|
docker-compose ps
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Работа с базой данных
|
|||
|
|
|
|||
|
|
### Подключение к PostgreSQL
|
|||
|
|
```bash
|
|||
|
|
docker-compose exec db psql -U botuser -d language_bot
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Бэкап базы данных
|
|||
|
|
```bash
|
|||
|
|
docker-compose exec db pg_dump -U botuser language_bot > backup.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Восстановление из бэкапа
|
|||
|
|
```bash
|
|||
|
|
docker-compose exec -T db psql -U botuser language_bot < backup.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Структура Docker
|
|||
|
|
|
|||
|
|
### Сервисы
|
|||
|
|
|
|||
|
|
- **db** - PostgreSQL 15 (база данных)
|
|||
|
|
- Порт: 5432
|
|||
|
|
- Volume: `postgres_data` для персистентности
|
|||
|
|
- Health check для проверки готовности
|
|||
|
|
|
|||
|
|
- **bot** - Telegram бот (Python приложение)
|
|||
|
|
- Зависит от `db`
|
|||
|
|
- Автоматический рестарт
|
|||
|
|
- Логи в `./logs`
|
|||
|
|
|
|||
|
|
### Volumes
|
|||
|
|
|
|||
|
|
- `postgres_data` - данные PostgreSQL (персистентные)
|
|||
|
|
- `./logs` - логи бота (на хосте)
|
|||
|
|
|
|||
|
|
## Переменные окружения
|
|||
|
|
|
|||
|
|
Полный список переменных в `.env`:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# Обязательные
|
|||
|
|
BOT_TOKEN=your_token # Токен от @BotFather
|
|||
|
|
OPENAI_API_KEY=your_key # API ключ OpenAI
|
|||
|
|
|
|||
|
|
# PostgreSQL (можно оставить по умолчанию)
|
|||
|
|
POSTGRES_USER=botuser
|
|||
|
|
POSTGRES_PASSWORD=botpassword
|
|||
|
|
POSTGRES_DB=language_bot
|
|||
|
|
|
|||
|
|
# Настройки
|
|||
|
|
DEBUG=True
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Troubleshooting
|
|||
|
|
|
|||
|
|
### Бот не запускается
|
|||
|
|
|
|||
|
|
1. Проверьте логи:
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs bot
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Проверьте, что база данных запущена:
|
|||
|
|
```bash
|
|||
|
|
docker-compose ps db
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Проверьте переменные окружения в `.env`
|
|||
|
|
|
|||
|
|
### База данных недоступна
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Проверить статус
|
|||
|
|
docker-compose ps db
|
|||
|
|
|
|||
|
|
# Перезапустить базу
|
|||
|
|
docker-compose restart db
|
|||
|
|
|
|||
|
|
# Проверить логи
|
|||
|
|
docker-compose logs db
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Очистка и полный перезапуск
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Остановить и удалить контейнеры
|
|||
|
|
docker-compose down
|
|||
|
|
|
|||
|
|
# Удалить volumes (ВНИМАНИЕ: удалит все данные!)
|
|||
|
|
docker-compose down -v
|
|||
|
|
|
|||
|
|
# Пересобрать и запустить
|
|||
|
|
docker-compose up -d --build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Production рекомендации
|
|||
|
|
|
|||
|
|
1. **Изменить пароли БД** в `.env`
|
|||
|
|
2. **Отключить DEBUG**: `DEBUG=False`
|
|||
|
|
3. **Настроить регулярные бэкапы** БД
|
|||
|
|
4. **Использовать Docker secrets** для чувствительных данных
|
|||
|
|
5. **Настроить мониторинг** логов и метрик
|