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

Резервное копирование

Docker Compose

Резервная копия включает Docker volumes и каталог установки (.env, лицензия, nginx/, tls/, s3-config.json, credentials-summary.txt и др.).

  1. Перейдите в каталог установки:

    cd /opt/appsec-registry
    
  2. Остановите контейнеры:

    docker compose -f docker-compose.yaml --env-file .env stop
    
  3. Сохраните конфигурацию и секреты (исключая данные volumes):

    sudo tar -czf registry-config-$(date +%F).tar.gz \
      .env registry-repo-license.lic registry.properties \
      s3-config.json credentials-summary.txt \
      nginx tls certs registry-wait-and-start.sh
    
  4. Сохраните данные volumes. Имена зависят от имени проекта compose (каталог установки). Для /opt/appsec-registry типичные имена: appsec-registry_postgres_data, appsec-registry_seaweedfs_data, appsec-registry_registry_data. Пример через временный контейнер:

    docker run --rm \
      -v appsec-registry_postgres_data:/data \
      -v $(pwd):/backup \
      alpine tar -czf /backup/postgres-data-$(date +%F).tar.gz -C /data .
    

    Аналогично для appsec-registry_seaweedfs_data и appsec-registry_registry_data.

    Список volumes: docker volume ls | grep appsec-registry

  5. Запустите сервисы снова:

    docker compose -f docker-compose.yaml --env-file .env start
    

Примечание

Рекомендуется хранить резервные копии на другом диске или в удалённом хранилище вне основной рабочей среды. Файл credentials-summary.txt содержит секреты — защитите его при передаче и хранении.

Kubernetes

  • PVC core (/registry-data): snapshot через CSI snapshot class кластера или backup tool (Velero и т.п.).
  • Secrets: credentials, license, imagePullSecrets — экспорт по политике безопасности организации.
  • CNPG (PostgreSQL): включение Barman → S3 и проверка backup — пошагово см. в разделе Резервное копирование и восстановление PostgreSQL (CNPG).
  • Артефакты blob store (внешний S3 / SeaweedFS) — отдельная политика резервного копирования object store.

Данные core монтируются в /registry-data внутри pod.