031-single-container-packaging
Single-container packaging: one image, one volume, first boot, keys, die-together supervision
Lifecycle approvedImplementation completeVerification unknownQualification unknown
One container plus one volume is a complete authenticated application. The image carries the app binary and the rauthy release binary. First boot generates every key (ledger, session, backup, rauthy ENC_KEYS, the admin token), writes rauthy's environment derived from one public URL, and bootstraps the OIDC client; a restart regenerates nothing. The app is the supervisor: it starts rauthy on loopback, waits for its health, starts serve, and when either exits the other is stopped and the container exits. The volume layout is /data/hiqlite, /data/rauthy, /data/keys, and /data/backups. Carries enrahitu://007.
Read the full pinned specification ↗Relationships
depends on
depended on by
- 032-cluster-topology
- 033-dev-substrate-and-harness
- 036-manifest-and-schema-evolution
- 037-identity-recovery-and-live-proof
- 038-native-clients-and-bearer-revocation
- 039-release-and-out-of-tree-packaging
- 040-runtime-identity-and-binding-surface
- 043-patched-dependency-adoption
- 044-n3-split-composition
- 048-store-clean-shutdown
Claimed units
- establishes
{ "kind": "file", "path": "crates/rahi-ops/src/first_boot.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-ops/src/keys.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-ops/src/supervise.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-ops/src/rauthy_env.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-ops/tests/first_boot.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-ops/tests/supervise.rs" } - establishes
{ "kind": "file", "path": "docker/Dockerfile" } - establishes
{ "kind": "file", "path": "docker/entrypoint.sh" } - establishes
{ "kind": "file", "path": "docker/smoke.sh" } - establishes
{ "kind": "file", "path": ".github/workflows/image.yml" } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-ops/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-ops/Cargo.toml" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/src/serve.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/tests/cli.rs" } } - extends
{ "nature": "additive", "spec": "010-workspace-and-core-types", "unit": { "anchor": "workspace.dependencies", "file": "Cargo.toml", "kind": "section" } } - extends
{ "nature": "additive", "spec": "025-api-tokens-and-resource-server", "unit": { "kind": "file", "path": "crates/rahi-idp/tests/bearer.rs" } } - extends
{ "nature": "additive", "spec": "001-agentic-harness", "unit": { "kind": "file", "path": ".github/workflows/govern.yml" } }
Source headings
- 031: Single-container packaging
- 1. Purpose
- 2. Territory
- 3. Behavior
- 4. Functional requirements
- 5. Acceptance criteria
- 6. Out of scope
- 7. Resolved decisions
- 8. Status
- Verification
Frozen anchors
No frozen anchors declared.