4.9 KiB
Easy-Docker Single-Stack Readiness
Purpose
This document freezes the required single-stack scope for easy-docker
before work moves to separate services.
Current interpretation:
single-stackmeans the implementedsingle-hosttopology.- The stack must be isolated from other stacks at the Docker Compose project level.
- The supported happy path is one usable site per stack unless a later product decision explicitly broadens this.
- The current site bootstrap path always installs the full app selection stored on the stack itself.
- It is not yet supported to create multiple sites in one stack with different app selections per site.
Current Supported Scope
The current codebase already supports these single-stack paths:
- Create production stack
- Create development stack
- Choose
single-hosttopology - Select proxy, database, and redis mode
- Select apps and branches
- Persist
metadata.json, stack.env,apps.json - Render
compose.generated.yaml - Manage existing stacks
- Regenerate
apps.json - Re-select apps and branches
- Build custom image
- Start stack with Docker Compose
- Stop stack with Docker Compose
- Show stack runtime status
- Abort wizard with rollback or keep-files behavior
- Isolate stacks through stack-specific Compose project names
Definition Of Done Before Separate Services
Single-stack is not considered complete when containers merely run. It is considered complete when the user can move from stack creation to a usable Frappe/ERPNext site and operate that stack safely.
Minimum user-facing path:
- Create stack
- Configure single-host topology
- Build image if needed
- Start stack
- Create/bootstrap first site
- Install selected apps on that site
- Verify site access behind the chosen proxy mode
- Stop/restart/down the stack
- Re-open manage flow and inspect status/logs
Required Remaining Changes
High Priority
- Add a documented or automated site/bootstrap path
- create first site
- install selected apps
- verify site routing/access
- Freeze the supported site model
- recommended: one site per stack as the supported happy path
Medium Priority
- Add remaining lifecycle operations
restartdown/removelogs
- Add post-start recovery guidance
- partial start
- failed bootstrap
- retry after custom image rebuild
- Add one-time cleanup/runbook note for stacks created before per-stack Compose project isolation
Hardening Priority
- Keep runtime status semantics explicit
Not createdCreatedRunningPartialStoppedRestarting- optional uptime hint
- Ensure manage actions only affect the selected stack
- Preserve safe abort/rollback behavior
Required Single-Stack Paths
Setup Paths
- Environment check
- Create production stack
- Create development stack
- Complete single-host wizard
- Back/cancel at each prompt
- Abort wizard with rollback
- Abort wizard while keeping files
Runtime Paths
- Generate compose from env
- Build custom image
- Start stack
- Stop stack
- Restart stack
- Down/remove stack resources
- Inspect runtime status
- Inspect logs
Site Paths
- Create first site
- Install selected apps on the site
- Current limitation: the site install set is the stack app set
- one stack -> one supported site -> one shared app selection
- Verify the site is reachable
- Re-open and manage the stack after restart
Recovery Paths
- Missing custom image -> build -> retry start
- Invalid app branch -> mapped build failure
- Partial start -> inspect status/logs -> retry
- Failed bootstrap -> rerun or recover cleanly
- Cleanup of pre-isolation shared Compose leftovers
Verification Matrix
Before calling single-stack ready, the team should execute at least:
- Environment/bootstrap gate
- New production single-stack creation
- New development single-stack creation
- Apps regeneration/update path
- Compose render path
- Custom image build success and failure paths
- Start path including missing-image build/retry
- Stop path
- Runtime isolation between two stacks
- Runtime status in not-created/created/running/partial/stopped states
- Abort/back/rollback paths
- Validation error and correction paths
- Site/bootstrap reality check after stack start
Required automated checks on every single-stack change:
bash -non touched shell filespre-commit run --files <changed easy-docker files>- compose render/config validation for at least one production and one development stack
Lead Verdict
single-stack is close on the Compose/runtime side but is not yet fully done.
The largest remaining gap before separate services is the missing
site/bootstrap lifecycle. After that, the next most important gaps are
restart, down/remove, logs, and reproducible manual verification.
Recommended order:
- Freeze single-stack site model
- Add site/bootstrap path
- Add
restart,down/remove, andlogs - Run the verification matrix
- Move to
separate services