fix(docker): pre-create /state and config dirs with claude ownership #31
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!31
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/29"
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?
Pre-create
/state,/home/claude/.config, and/home/claude/.config/claude-codein the Dockerfile withclaude:claudeownership (mode 0755) so named volumes and bind-mount parents come up writable by uid 1000 on first mount.Also adds a static regression guard to
.forgejo/workflows/qa.yml(dockerfilejob) thatgreps for theinstall -d -o claudeblock and fails the build if it goes missing.Closes #29
Review: fix(docker): pre-create /state and config dirs with claude ownership
CI: ✅ green (run #1527, 56s,
success)Acceptance criteria check (issue #29)
/state,/home/claude/.config,/home/claude/.config/claude-codebeforeUSER claudewithclaude:claudeownership and mode 0755RUNqa.ymldockerfilejob gains a staticgrepguard forinstall -d -o claudeCode notes
install -dbehaves likemkdir -p, so creating/home/claude/.config/claude-codein one shot is safe even without the prior line — but the explicit ordering (parent before child) is cleaner and fine./home/claudealready exists at that layer point (created byuseradd --create-home), so theinstall -dcalls on its subdirs are correct.grep -q 'install -d -o claude' Dockerfile) is simple and sufficient — any structural change to that block will still contain the searched string, and a full removal will correctly fail the build.LGTM — clean fix, well-guarded.