Перейти к содержанию

Управление сервисами

Скрипты управления

Все скрипты расположены в директории compose/scripts/ и должны запускаться из директории compose/.

start.sh — полный запуск

Запускает все контейнеры и ожидает готовности инфраструктурных сервисов.

cd compose
./scripts/start.sh

Что выполняет:

  1. Проверяет наличие файла .env (копирует из .env.example при отсутствии).
  2. Запускает docker compose up -d.
  3. Последовательно проверяет готовность: PostgreSQL, NATS, Redis, MinIO, Keycloak.
  4. Выводит таблицу URL всех сервисов.

stop.sh — остановка

Останавливает все контейнеры с сохранением данных (Docker volumes не удаляются).

./scripts/stop.sh

Эквивалентная команда:

docker compose down

Сохранение данных

Команда docker compose down останавливает и удаляет контейнеры, но сохраняет Docker volumes. Все данные PostgreSQL, Redis, MinIO и NATS останутся на месте. При следующем docker compose up -d сервисы продолжат работу с теми же данными.

logs.sh — просмотр логов

Просмотр логов конкретного сервиса в реальном времени:

# Логи конкретного сервиса
./scripts/logs.sh scan-orchestrator

# Все логи (требует указания 'all')
./scripts/logs.sh all

Альтернатива через Docker Compose:

# Последние 100 строк + follow
docker compose logs -f --tail 100 scan-orchestrator

# Логи нескольких сервисов
docker compose logs -f model-management scan-profile results

# Логи с временными метками
docker compose logs -f --timestamps jailbreak-api

health-check.sh — проверка состояния

Проверяет доступность всех инфраструктурных и прикладных сервисов:

./scripts/health-check.sh

Скрипт выполняет healthcheck для каждого сервиса и выводит результат:

  • ✅ OK — сервис доступен и работает.
  • ❌ FAILED — сервис недоступен.

По завершении выводится общий статус и количество неуспешных проверок.

reset.sh — полный сброс

Удаление ВСЕХ данных

Этот скрипт удаляет все данные платформы, включая базу данных, бакеты MinIO, потоки NATS и кеш Redis. Используйте только для полного пересоздания среды.

./scripts/reset.sh

Что выполняет:

  1. Запрашивает подтверждение (yes).
  2. Выполняет docker compose down -v (удаляет контейнеры и volumes).
  3. Удаляет локальные директории данных.

Для восстановления после сброса:

./scripts/start.sh

Пересборка Docker-образов

Принцип пересборки

В docker-compose.yml параметр build указан только у контейнеров миграций. Все остальные контейнеры того же сервиса используют образ, собранный миграционным контейнером. Поэтому для пересборки любого сервиса необходимо пересобрать его миграционный контейнер.

graph LR
    BUILD["docker compose build<br/><service>-migrations"]
    IMG["genai-<service>:latest"]
    C1["<service>-migrations"]
    C2["<service>-seed"]
    C3["<service> (API)"]
    C4["<service>-preparator"]
    C5["<service>-attacker"]

    BUILD --> IMG
    IMG --> C1 & C2 & C3 & C4 & C5

Пошаговая процедура

cd compose

# 1. Пересборка образа
docker compose build jailbreak-migrations

# 2. Перезапуск всех контейнеров Jailbreak
docker compose up -d jailbreak-api jailbreak-preparator \
    jailbreak-attacker jailbreak-judge jailbreak-reporter
cd compose

# 1. Пересборка образа
docker compose build asr-adversarial-migrations

# 2. Перезапуск всех контейнеров ASR
docker compose up -d asr-adversarial-api asr-adversarial-preparator \
    asr-adversarial-attacker asr-adversarial-judge asr-adversarial-reporter
cd compose

# 1. Пересборка образа
docker compose build cv-adversarial-migrations

# 2. Перезапуск всех контейнеров CV
docker compose up -d cv-adversarial-api cv-adversarial-preparator \
    cv-adversarial-attacker cv-adversarial-judge cv-adversarial-reporter
cd compose

# 1. Пересборка образа
docker compose build model-management-migrations

# 2. Перезапуск
docker compose up -d model-management
cd compose

# 1. Пересборка образа
docker compose build scan-profile-migrations

# 2. Перезапуск
docker compose up -d scan-profile
cd compose

# 1. Пересборка образа
docker compose build results-migrations

# 2. Перезапуск
docker compose up -d results
cd compose

# 1. Пересборка образа
docker compose build scan-orchestrator-migrations

# 2. Перезапуск
docker compose up -d scan-orchestrator
cd compose

# UI Gateway собирается напрямую (нет миграций)
docker compose build ui-gateway
docker compose up -d ui-gateway
cd compose

# UI собирается напрямую
docker compose build ui
docker compose up -d ui

Полная пересборка всех образов

cd compose

# Пересборка всех образов (только сервисы с параметром build)
docker compose build

# Перезапуск всех контейнеров с новыми образами
docker compose up -d

Время сборки

Полная пересборка всех образов может занимать 15--30 минут в зависимости от скорости сети (скачивание зависимостей) и производительности сервера.


Повседневные операции

Перезапуск отдельного сервиса

# Перезапуск без пересборки
docker compose restart model-management

# Остановка и запуск (с пересозданием контейнера)
docker compose up -d --force-recreate model-management

Масштабирование воркеров

Для увеличения производительности можно масштабировать воркеры:

# Масштабирование jailbreak-attacker до 3 реплик
docker compose up -d --scale jailbreak-attacker=3

Ограничения

Масштабирование работает только для контейнеров без фиксированного IP-адреса и без привязки к конкретному порту хоста. Воркеры (preparator, attacker, judge, reporter) можно масштабировать, а API-контейнеры — нет.

Просмотр использования ресурсов

# Текущее потребление CPU/RAM всеми контейнерами
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}"

Очистка неиспользуемых образов

# Удаление неиспользуемых образов (dangling)
docker image prune -f

# Удаление всех неиспользуемых образов
docker image prune -a -f

# Полная очистка (образы, кеш сборки, остановленные контейнеры)
docker system prune -f

Просмотр размера volumes

docker system df -v | grep -A 100 "Local Volumes"

Бэкап и восстановление

Полный бэкап

#!/bin/bash
# backup.sh — полный бэкап AppSec.GenAI

BACKUP_DIR="/backup/genai/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

# 1. Бэкап PostgreSQL
docker exec postgres pg_dumpall -U postgres > "$BACKUP_DIR/postgres_full.sql"
echo "PostgreSQL backup: OK"

# 2. Бэкап Redis
docker exec redis redis-cli BGSAVE
sleep 5
docker cp redis:/data/dump.rdb "$BACKUP_DIR/redis_dump.rdb"
echo "Redis backup: OK"

# 3. Бэкап MinIO (данные)
docker cp minio:/data "$BACKUP_DIR/minio_data"
echo "MinIO backup: OK"

# 4. Бэкап конфигурации
cp compose/.env "$BACKUP_DIR/env_backup"
echo "Config backup: OK"

echo "Backup completed: $BACKUP_DIR"

Восстановление из бэкапа

#!/bin/bash
# restore.sh — восстановление из бэкапа

BACKUP_DIR=$1
if [ -z "$BACKUP_DIR" ]; then
    echo "Usage: restore.sh /path/to/backup"
    exit 1
fi

# 1. Остановка сервисов (сохранение volumes)
cd compose && docker compose down

# 2. Восстановление PostgreSQL
docker compose up -d postgres
sleep 10
docker exec -i postgres psql -U postgres < "$BACKUP_DIR/postgres_full.sql"

# 3. Восстановление Redis
docker cp "$BACKUP_DIR/redis_dump.rdb" redis:/data/dump.rdb
docker compose restart redis

# 4. Запуск всех сервисов
docker compose up -d