Add docker admin bootstrap for clean release

This commit is contained in:
2026-03-13 11:41:44 +03:00
parent 1cef3f7e84
commit 36742cd20c
12 changed files with 254 additions and 25 deletions

View File

@@ -34,7 +34,8 @@
- 1 enterprise release flow;
- 1 TUI сценарий подготовки/проверки;
- 69 новых/обновлённых модулей (+config_loader, filesystem_scanner, db_cleanup_executor);
- документация и контракты в пределах feature-папки.
- документация и контракты в пределах feature-папки;
- runtime bootstrap администратора через переменные `.env.enterprise-clean` без hardcode секретов в образах.
## Constitution Check
@@ -167,7 +168,8 @@ frontend/
## Implementation Traceability & Final Notes
- Статус реализации: Phase 17 завершены (T001T043).
- Статус реализации: Phase 17 завершены (T001T044).
- Новое расширение (post-release hardening, 2026-03-13): добавлен scope на управляемый bootstrap администратора через `.env.enterprise-clean` и docker startup flow.
- Ключевые подтверждения polish-фазы:
- T039: smoke TUI сценария зафиксирован в [`quickstart.md`](./quickstart.md).
- T040: контрактная проверка API подтверждена тестом [`backend/tests/api/routes/test_clean_release_api.py`](../../backend/tests/api/routes/test_clean_release_api.py).
@@ -175,7 +177,30 @@ frontend/
- T042: governance conflict по префиксу закрыт и задокументирован.
- T043: добавлена итоговая traceability-нотация в текущем плане.
Итог: feature готова к финальному релизному циклу с обязательным CI gate (`COMPLIANT` only) и операционной доказательной базой для аудита.
Итог: базовая feature готова к финальному релизному циклу с обязательным CI gate (`COMPLIANT` only) и операционной доказательной базой для аудита.
## Post-Release Hardening Addendum — Admin Bootstrap via `.env.enterprise-clean`
Цель addendum: убрать ручной шаг создания initial admin после доставки offline bundle и сделать это управляемой частью container startup.
Архитектурные решения:
1. В `.env.enterprise-clean.example` добавить параметры:
- `INITIAL_ADMIN_CREATE=false` (default-safe),
- `INITIAL_ADMIN_USERNAME=admin`,
- `INITIAL_ADMIN_PASSWORD=change-me`,
- `INITIAL_ADMIN_EMAIL=` (optional).
2. В backend image добавить entrypoint-скрипт:
- запускает проверку флага `INITIAL_ADMIN_CREATE`,
- при `true` вызывает существующий скрипт создания администратора,
- обрабатывает idempotency (существующий пользователь => без ошибки, лог `already exists`).
3. В `docker-compose.enterprise-clean.yml` прокинуть переменные bootstrap администратора только в `backend` service.
4. В операционном runbook зафиксировать обязательную ротацию bootstrap-пароля после первого входа.
5. В offline bundle manifest оставить ссылку на `.env.enterprise-clean.example` как source-of-truth для параметров запуска.
Нефункциональные ограничения:
- Никаких default production секретов в Git.
- Повторный restart контейнера не должен менять существующего admin.
- Ошибка bootstrap не должна маскироваться: должна логироваться и приводить к fail-fast старта backend (чтобы оператор устранил причину до ввода в эксплуатацию).
## Complexity Tracking