diff --git a/README.md b/README.md index 68ac191e..7f9e4d62 100755 --- a/README.md +++ b/README.md @@ -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 ``` -