API для работы с файлами, индексация файлов и результатов распощнавания
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
# Docker Deployment Guide
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
### Сборка и запуск с Docker Compose (рекомендуется)
|
||||
|
||||
```bash
|
||||
# Сборка и запуск
|
||||
docker-compose up -d
|
||||
|
||||
# Просмотр логов
|
||||
docker-compose logs -f
|
||||
|
||||
# Остановка
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
Приложение будет доступно по адресу: http://localhost:8000
|
||||
|
||||
API документация:
|
||||
- Swagger UI: http://localhost:8000/api/v1/docs
|
||||
- ReDoc: http://localhost:8000/api/v1/redoc
|
||||
|
||||
### Ручной запуск с Docker
|
||||
|
||||
```bash
|
||||
# Сборка образа
|
||||
docker build -t file-audio-api .
|
||||
|
||||
# Запуск контейнера
|
||||
docker run -d \
|
||||
--name file-audio-api \
|
||||
-p 8000:8000 \
|
||||
-v $(pwd)/uploads:/app/uploads \
|
||||
-v $(pwd)/data:/app/data \
|
||||
-e DATABASE_URL=sqlite:////app/data/speech_analytics.db \
|
||||
file-audio-api
|
||||
|
||||
# Просмотр логов
|
||||
docker logs -f file-audio-api
|
||||
|
||||
# Остановка и удаление контейнера
|
||||
docker stop file-audio-api
|
||||
docker rm file-audio-api
|
||||
```
|
||||
|
||||
## Управление данными
|
||||
|
||||
### Загруженные файлы
|
||||
Файлы сохраняются в директории `./uploads` на хост-машине (монтируются в контейнер).
|
||||
|
||||
### База данных
|
||||
SQLite база данных находится в `./data/speech_analytics.db`.
|
||||
|
||||
### Бэкап данных
|
||||
|
||||
```bash
|
||||
# Бэкап базы данных
|
||||
docker exec file-audio-api cp /app/data/speech_analytics.db /app/backup_$(date +%Y%m%d).db
|
||||
|
||||
# Бэкап загруженных файлов
|
||||
tar -czf uploads_backup_$(date +%Y%m%d).tar.gz uploads/
|
||||
```
|
||||
|
||||
## Production конфигурация
|
||||
|
||||
### Использование PostgreSQL
|
||||
|
||||
Раскомментируйте секцию `db` в `docker-compose.yml` и измените `DATABASE_URL`:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- DATABASE_URL=postgresql://speechuser:speechpass@db:5432/speech_analytics
|
||||
```
|
||||
|
||||
### Использование Redis для статусов задач
|
||||
|
||||
Раскомментируйте секцию `redis` в `docker-compose.yml` и подключите в коде:
|
||||
|
||||
```python
|
||||
# apiApp/config.py
|
||||
import redis
|
||||
redis_client = redis.from_url("redis://redis:6379")
|
||||
```
|
||||
|
||||
### Environment переменные
|
||||
|
||||
Создайте `.env` файл:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
И отредактируйте:
|
||||
|
||||
```env
|
||||
DATABASE_URL=postgresql://user:password@db:5432/speech_analytics
|
||||
MAX_UPLOAD_SIZE=104857600
|
||||
```
|
||||
|
||||
## Health Check
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
Ожидаемый ответ:
|
||||
```json
|
||||
{"status": "healthy"}
|
||||
```
|
||||
|
||||
## Логи и отладка
|
||||
|
||||
```bash
|
||||
# Просмотр логов
|
||||
docker-compose logs -f app
|
||||
|
||||
# Вход в контейнер для отладки
|
||||
docker-compose exec app bash
|
||||
|
||||
# Перезапуск с пересборкой
|
||||
docker-compose up -d --build
|
||||
```
|
||||
|
||||
## Производительность
|
||||
|
||||
### Настройка количества workers
|
||||
|
||||
Для production рекомендуется использовать несколько workers:
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name file-audio-api \
|
||||
-p 8000:8000 \
|
||||
file-audio-api \
|
||||
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
|
||||
```
|
||||
|
||||
Или в `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]
|
||||
```
|
||||
|
||||
## Безопасность
|
||||
|
||||
### Ограничение CORS
|
||||
|
||||
Отредактируйте `main.py`:
|
||||
|
||||
```python
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["https://yourdomain.com"], # Замените на ваш домен
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
```
|
||||
|
||||
### Добавление SSL
|
||||
|
||||
Используйте reverse proxy (nginx) или:
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name file-audio-api \
|
||||
-p 8443:8443 \
|
||||
-v /path/to/certs:/app/certs \
|
||||
file-audio-api \
|
||||
uvicorn main:app --host 0.0.0.0 --port 8443 --ssl-keyfile /app/certs/key.pem --ssl-certfile /app/certs/cert.pem
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Контейнер не запускается
|
||||
|
||||
```bash
|
||||
# Проверка логов
|
||||
docker-compose logs app
|
||||
|
||||
# Проверка статуса
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
### Ошибки с базой данных
|
||||
|
||||
```bash
|
||||
# Перезапуск с очисткой volumes
|
||||
docker-compose down -v
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Проблемы с правами доступа
|
||||
|
||||
```bash
|
||||
# Установка прав на директорию uploads
|
||||
chmod -R 755 uploads/
|
||||
```
|
||||
|
||||
## Мониторинг
|
||||
|
||||
### Использование Docker stats
|
||||
|
||||
```bash
|
||||
docker stats file-audio-api
|
||||
```
|
||||
|
||||
### Интеграция с Prometheus
|
||||
|
||||
Добавьте в `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
ports:
|
||||
- "9090:9090"
|
||||
```
|
||||
Reference in New Issue
Block a user