Docker развертывание
Руководство по развертыванию DocAI с использованием Docker Compose.
Быстрый старт
# Клонировать репозиторий
git clone <repository-url>
cd docai
# Настроить окружение
cp .env.backend.template .env.backend
cp .env.frontend.template .env.frontend
# Запустить
docker compose up -d
Структура сервисов
services:
db: # PostgreSQL
redis: # Redis для Celery
api: # Django API
web: # Next.js frontend
celery-worker: # Celery воркер
celery-beat: # Celery scheduler
docusaurus: # Документация
Конфигурация
docker-compose.yaml
version: '3.8'
services:
db:
image: postgres:14
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
POSTGRES_DB: db
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7-alpine
ports:
- "6379:6379"
api:
build:
context: backend
command: >
bash -c "uv sync &&
uv run -- python manage.py migrate &&
uv run -- python manage.py runserver 0.0.0.0:8000"
volumes:
- ./backend:/app
ports:
- "8000:8000"
env_file:
- .env.backend
depends_on:
- db
- redis
web:
build:
context: frontend
command: bash -c "pnpm install -r && pnpm --filter web dev"
volumes:
- ./frontend:/app
ports:
- "3000:3000"
env_file:
- .env.frontend
depends_on:
- api
celery-worker:
build:
context: backend
command: uv run celery -A api worker --loglevel=info --concurrency=1
volumes:
- ./backend:/app
env_file:
- .env.backend
depends_on:
- db
- redis
celery-beat:
build:
context: backend
command: uv run celery -A api beat --loglevel=info
volumes:
- ./backend:/app
env_file:
- .env.backend
depends_on:
- db
- redis
volumes:
postgres_data:
Команды
Управление контейнерами
# Запуск
docker compose up -d
# Остановка
docker compose down
# Перезапуск
docker compose restart
# Логи
docker compose logs -f
# Логи конкретного сервиса
docker compose logs -f api
Работа с API
# Миграции
docker compose exec api uv run -- python manage.py migrate
# Создание суперпользователя
docker compose exec api uv run -- python manage.py createsuperuser
# Django shell
docker compose exec api uv run -- python manage.py shell
# Компиляция сообщений
docker compose exec api uv run -- python manage.py compilemessages
Работа с Frontend
# Установка зависимостей
docker compose exec web pnpm install -r
# Обновление типов API
docker compose exec web pnpm openapi:generate
# Добавление пакета
docker compose exec web pnpm --filter web add package-name
Celery
# Статус воркеров
docker compose exec api uv run celery -A api inspect active
# Очистка очереди
docker compose exec api uv run celery -A api purge
Тестирование
# Все тесты
docker compose exec api uv run -- pytest .
# Конкретный тест
docker compose exec api uv run -- pytest . -k "test_name"
Volumes
| Volume | Путь в контейнере | Описание |
|---|---|---|
postgres_data | /var/lib/postgresql/data | Данные PostgreSQL |
./backend | /app | Код backend (hot reload) |
./frontend | /app | Код frontend (hot reload) |
Порты
| Сервис | Порт | Описание |
|---|---|---|
| db | 5432 | PostgreSQL |
| redis | 6379 | Redis |
| api | 8000 | Django API |
| web | 3000 | Next.js |
| docusaurus | 3002 | Документация |
Переменные окружения
.env.backend
SECRET_KEY=your-secret-key
DEBUG=1
DATABASE_USER=postgres
DATABASE_PASSWORD=change-password
DATABASE_NAME=db
DATABASE_HOST=db
DATABASE_PORT=5432
OCR_URL_DOC=http://ocr:8080/api/ocr
DIFY_BASE_URL=http://dify.example.com