docs: describe offline docker release workflow for enterprise clean

This commit is contained in:
2026-03-11 12:27:28 +03:00
parent a13f75587d
commit b887d4a509

View File

@@ -233,6 +233,50 @@ cd /home/busya/dev/ss-tools
Если найден внешний endpoint, выпуск получает статус `BLOCKED` до исправления.
### Docker release для изолированного контура
Текущий `enterprise clean` профиль уже задаёт policy-level ограничения для внутреннего контура. Следующий логичный шаг для релизного процесса — выпускать не только application artifacts, но и готовый Docker bundle для разворота без доступа в интернет.
Целевой состав offline release-пакета:
- `backend` image с уже установленными Python-зависимостями;
- `frontend` image с уже собранным SvelteKit bundle;
- `postgres` image или внутренний pinned base image;
- `docker-compose.enterprise-clean.yml` для запуска в air-gapped окружении;
- `.env.enterprise-clean.example` с обязательными переменными;
- manifest с версиями, sha256 и перечнем образов;
- инструкции по `docker load` / `docker compose up` без обращения к внешним registry.
Рекомендуемый workflow для такого релиза:
```bash
# 1. Собрать образы в подключённом контуре
docker compose -f docker-compose.yml build
# 2. Экспортировать их в tar-архивы
docker save ss-tools-backend:TAG -o dist/docker/backend.TAG.tar
docker save ss-tools-frontend:TAG -o dist/docker/frontend.TAG.tar
# 3. Передать bundle в изолированный контур
# 4. Импортировать образы локально
docker load -i dist/docker/backend.TAG.tar
docker load -i dist/docker/frontend.TAG.tar
# 5. Запустить только локальные образы
docker compose -f docker-compose.enterprise-clean.yml up -d
```
Ограничения для production-grade offline release:
- build не должен тянуть зависимости в изолированном контуре;
- все base images должны быть заранее зеркалированы во внутренний registry или поставляться как tar;
- runtime-конфигурация не должна ссылаться на внешние API/registry/telemetry endpoints;
- clean/compliance manifest должен включать docker image digests как часть evidence package.
Практический план внедрения:
- добавить pinned Docker image tags и отдельный `enterprise-clean` compose profile;
- подготовить `make release-docker-bundle` или shell script для `build -> save -> checksum`;
- включить docker image digests в clean-release manifest;
- добавить smoke-check, что compose-файлы не содержат внешних registry references вне allowlist.
## 📖 Документация
- [Установка и настройка](docs/installation.md)
@@ -328,4 +372,3 @@ cd frontend
npm install
```