Files
FileAudioAPI/README_DOCKER.md
T

222 lines
4.7 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.
# 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"
```