[DS-36] Set up docker-compose dev containers (tests/typecheck + Storybook) #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/DS-36"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ticket
DS-36 Set up docker-compose dev containers (tests/typecheck + Storybook)
Summary
Dockerfile.dev— a VS Code Dev Container image (bun, git, gh, tea, uv, native Claude Code CLI) trimmed from the irrigo/budget-tracker pattern, with the Android/Gradle/Expo toolchain and the Postgres/Mongo healthcheck dependency dropped (neither applies — this is a plain tsup-built component package with no API/app/DB split).docker-compose.ymlwith adevservice (sleep infinity, host~/.claude/~/.claude.json/~/.gitconfig/~/.ssh+ VS Code Server mounts, used forbun run test/bun run typecheck) and astorybookservice (publishesSTORYBOOK_PORT, profile-gated so it stays out of a baredocker compose up -d— it has nothing to run until Storybook is configured in a separately-tracked ticket)..env.exampledocumentingCOMPOSE_PROJECT_NAME,DEV_USER/DEV_UID/DEV_GID,FORGEJO_TOKEN,PRIMARY_GIT_DIR,STORYBOOK_PORT, andDOCKER_SUBNET, plus a worktree-offset table.CLAUDE.md.Two deliberate deviations from the original plan, both verified against the real host/toolchain rather than assumed:
bun install --frozen-lockfile --ignore-scripts(image build layer andENTRYPOINT), instead of a plainbun install --frozen-lockfile. This package'spackage.jsonrunstsupvia apreparelifecycle script, and the manifest-only COPY layer has nosrc//tsup.config.tsyet, sotsupfails with "No input files." Dev-container tasks (bun run test,bun run typecheck) never need the builtdist/, so skipping the build here is safe.DOCKER_SUBNET(.env.example, default10.89.0.0/24, referenced indocker-compose.yml) instead of letting Compose auto-assign a subnet. This host's entire set of Docker default address pools (172.17-172.31/16 and 192.168.0-240/20) is already fully allocated across the other stacks running here, so auto-assignment fails outright. Parameterized (not hardcoded) so a worktree stack can override it to a distinct block — verified two stacks pinning the same subnet fail to come up together.Went through a pre-PR review pass that surfaced 8 findings (missing
FORGEJO_TOKENplumbing todev, astorybookrestart-loop, the worktree subnet collision, a few doc/convention cleanups) — all addressed in a follow-up commit and re-verified; a scoped follow-up review came back merge-ready.Out of scope per the ticket (tracked separately): configuring Jest/Storybook themselves, and CI wiring.