Add docker admin bootstrap for clean release
This commit is contained in:
@@ -152,15 +152,15 @@ psql -U postgres -d ss_tools
|
||||
|
||||
```bash
|
||||
cd /home/busya/dev/ss-tools
|
||||
./scripts/build_offline_docker_bundle.sh v1.0.0-rc2
|
||||
./scripts/build_offline_docker_bundle.sh v1.0.0-rc2-docker
|
||||
```
|
||||
|
||||
Результат появится в `dist/docker/`:
|
||||
- `backend.v1.0.0-rc2.tar`
|
||||
- `frontend.v1.0.0-rc2.tar`
|
||||
- `postgres.v1.0.0-rc2.tar`
|
||||
- `sha256sums.v1.0.0-rc2.txt`
|
||||
- `manifest.v1.0.0-rc2.txt`
|
||||
- `backend.v1.0.0-rc2-docker.tar`
|
||||
- `frontend.v1.0.0-rc2-docker.tar`
|
||||
- `postgres.v1.0.0-rc2-docker.tar`
|
||||
- `sha256sums.v1.0.0-rc2-docker.txt`
|
||||
- `manifest.v1.0.0-rc2-docker.txt`
|
||||
- `docker-compose.enterprise-clean.yml`
|
||||
- `.env.enterprise-clean.example`
|
||||
|
||||
@@ -171,9 +171,9 @@ cd /home/busya/dev/ss-tools
|
||||
### 3. Импорт образов
|
||||
|
||||
```bash
|
||||
docker load -i backend.v1.0.0-rc2.tar
|
||||
docker load -i frontend.v1.0.0-rc2.tar
|
||||
docker load -i postgres.v1.0.0-rc2.tar
|
||||
docker load -i backend.v1.0.0-rc2-docker.tar
|
||||
docker load -i frontend.v1.0.0-rc2-docker.tar
|
||||
docker load -i postgres.v1.0.0-rc2-docker.tar
|
||||
```
|
||||
|
||||
### 4. Подготовка конфигурации
|
||||
@@ -189,6 +189,16 @@ cp .env.enterprise-clean.example .env.enterprise-clean
|
||||
- `POSTGRES_PASSWORD`
|
||||
- `STORAGE_ROOT`
|
||||
|
||||
Для первого запуска в новом контуре дополнительно задайте:
|
||||
- `INITIAL_ADMIN_CREATE=true`
|
||||
- `INITIAL_ADMIN_USERNAME=<org-admin-login>`
|
||||
- `INITIAL_ADMIN_PASSWORD=<temporary-strong-secret>`
|
||||
- `INITIAL_ADMIN_EMAIL=<optional>`
|
||||
|
||||
Также проверьте, что теги образов в [`.env.enterprise-clean`](.env.enterprise-clean.example) совпадают с реально загруженными:
|
||||
- `BACKEND_IMAGE=ss-tools-backend:v1.0.0-rc2-docker`
|
||||
- `FRONTEND_IMAGE=ss-tools-frontend:v1.0.0-rc2-docker`
|
||||
|
||||
### 5. Запуск в offline-контуре
|
||||
|
||||
```bash
|
||||
@@ -197,6 +207,21 @@ docker compose --env-file .env.enterprise-clean -f docker-compose.enterprise-cle
|
||||
|
||||
Compose-файл использует `pull_policy: never`, поэтому runtime не должен обращаться к внешним registry.
|
||||
|
||||
### 6. Bootstrap администратора в контейнере
|
||||
|
||||
При `INITIAL_ADMIN_CREATE=true` backend container автоматически:
|
||||
1. инициализирует auth DB;
|
||||
2. запускает [`create_admin.py`](../backend/src/scripts/create_admin.py) с runtime-параметрами;
|
||||
3. создаёт пользователя только если его ещё нет;
|
||||
4. при повторном старте не изменяет существующего администратора.
|
||||
|
||||
После первого успешного входа обязательно:
|
||||
- смените bootstrap-пароль на постоянный организационный секрет;
|
||||
- установите `INITIAL_ADMIN_CREATE=false`;
|
||||
- перезапустите stack с обновлённым `.env.enterprise-clean`.
|
||||
|
||||
Если bootstrap завершается ошибкой, backend не стартует — это ожидаемый fail-fast режим для безопасного ввода в эксплуатацию.
|
||||
|
||||
## Первая настройка
|
||||
|
||||
### 1. Инициализация базы данных
|
||||
@@ -450,6 +475,24 @@ export CLEAN_TUI_ARTIFACTS_JSON=/absolute/path/artifacts.json
|
||||
}
|
||||
```
|
||||
|
||||
Минимальный пример `artifacts.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"artifacts": [
|
||||
{
|
||||
"id": "artifact-backend-dist",
|
||||
"path": "backend/dist/package.tar.gz",
|
||||
"sha256": "deadbeef",
|
||||
"size": 1024,
|
||||
"category": "core",
|
||||
"source_uri": "https://repo.intra.company.local/releases/backend/dist/package.tar.gz",
|
||||
"source_host": "repo.intra.company.local"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Политика источников (internal-only)
|
||||
|
||||
Разрешены только хосты из внутреннего реестра компании, например:
|
||||
|
||||
Reference in New Issue
Block a user