API для работы с файлами, индексация файлов и результатов распощнавания

This commit is contained in:
poturaevpetr
2025-12-24 16:05:14 +05:00
parent 4f23dc8664
commit c39b348472
31 changed files with 1739 additions and 0 deletions
+221
View File
@@ -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"
```