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

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

Все операции с платформой выполняются из каталога поставки ($DEPLOY_DIR) штатными командами docker compose. Скрипты-обёртки в вендорскую поставку не входят.

Основные команды

Полный запуск

cd $DEPLOY_DIR
docker compose up -d

Команда поднимает все контейнеры в фоновом режиме. Платформа автоматически выполняет миграции БД, инициализацию NATS и MinIO, загрузку seed-данных. Подробности — см. Установка и запуск.

Остановка с сохранением данных

docker compose down

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

Полный сброс (удаление всех данных)

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

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

docker compose down -v

Флаг -v удаляет volumes вместе с контейнерами. Для восстановления — запустите docker compose up -d (миграции и seed-данные применятся заново).

Просмотр статуса

# Все контейнеры платформы
docker compose ps

# Конкретный сервис
docker compose ps scan-orchestrator

Просмотр логов

# Последние 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

# Все логи всех сервисов сразу
docker compose logs -f

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

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

# Перезапуск без пересоздания контейнера
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

После полной очистки

Команда docker system prune -a удалит все образы, включая образы AppSec.GenAI. Перед следующим запуском потребуется повторно выполнить docker compose pull (см. Установка и запуск) — это снова потянет около 25 ГБ образов.

Просмотр размера 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 "$DEPLOY_DIR/.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

cd $DEPLOY_DIR

# 1. Остановка сервисов (сохранение volumes)
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

Регулярные бэкапы

Настройте автоматический запуск backup.sh через cron с хранением последних N копий. Для критичных стендов рекомендуется ежедневный бэкап БД и еженедельный полный бэкап (включая MinIO).