Docker¶
Развёртывание AegisAI с помощью Docker Compose.
Предварительные требования¶
- Docker 24+
- Docker Compose v2+
- 4 GB RAM (минимум)
Быстрый старт¶
Сервисы¶
docker-compose.yml определяет пять сервисов:
postgres¶
image: postgres:15-alpine
ports: ["5432:5432"]
environment:
POSTGRES_USER: aegisai
POSTGRES_PASSWORD: aegisai_pass
POSTGRES_DB: aegisai
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U aegisai"]
redis¶
image: redis:7-alpine
ports: ["6379:6379"]
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
opa¶
image: openpolicyagent/opa:0.68.0
ports: ["8181:8181"]
command: ["run", "--server", "--addr", "0.0.0.0:8181"]
app (FastAPI)¶
build: .
ports: ["8000:8000"]
depends_on:
postgres: {condition: service_healthy}
redis: {condition: service_healthy}
opa: {condition: service_started}
environment:
DATABASE_URL: postgresql+asyncpg://aegisai:aegisai_pass@postgres:5432/aegisai
REDIS_URL: redis://redis:6379/0
OPA_URL: http://opa:8181
command: >
sh -c "poetry run alembic upgrade head &&
poetry run python scripts/init_super_admin.py &&
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload"
frontend (Vite)¶
build: {context: ./frontend}
ports: ["5173:5173"]
environment:
VITE_PROXY_TARGET: http://app:8000
depends_on: [app]
Управление¶
Переменные окружения¶
Задайте в .env или в docker-compose.yml:
SECRET_KEY=your-production-secret
ADMIN_API_KEY=your-admin-key
WEBHOOK_SECRET=your-webhook-secret
SUPER_ADMIN_EMAIL=admin@company.com
SUPER_ADMIN_PASSWORD=SecurePassword123!
ENVIRONMENT=production
AUDIT_RETENTION_DAYS=365
ENABLE_GUARD=true
GUARD_MODEL_PATH=./models/guard/guard_model.pkl
Volumes¶
| Volume | Назначение |
|---|---|
postgres_data |
Данные PostgreSQL |
redis_data |
Данные Redis |
Для персистентности ML-моделей и экспортов примонтируйте:
Production Docker Compose¶
Для production уберите --reload и dev-volumes:
app:
command: >
sh -c "poetry run alembic upgrade head &&
poetry run python scripts/init_super_admin.py &&
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4"
restart: unless-stopped
Сборка фронтенда¶
Раздайте frontend/dist/ через Nginx или CDN.
Dockerfile¶
Основной Dockerfile в корне репозитория:
FROM python:3.11-slim
WORKDIR /app
RUN pip install poetry
COPY pyproject.toml poetry.lock ./
RUN poetry install --no-dev
COPY . .
EXPOSE 8000
Health Checks¶
# Все сервисы
docker compose ps
# API
curl http://localhost:8000/api/v1/health/ready
# PostgreSQL
docker compose exec postgres pg_isready -U aegisai
# Redis
docker compose exec redis redis-cli ping
Демо-данные¶
Первый запуск
При первом docker compose up автоматически выполняются миграции Alembic и создание суперадминистратора.