docker-compose.yml: switch .claude mounts to shared CLAUDE_CONFIG_DIR #642
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#642
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Context
Three services in
docker-compose.ymlcurrently bind-mount${HOME}/.claudeand${HOME}/.claude.jsoninto agent containers. Because the path inside each container (/home/agent/.claude) is identical but the lockfile sibling (/home/agent/.claude.lock) lives in each container's overlay rather than a shared mount, OAuth refreshes race across containers.Issue #641 introduces
CLAUDE_SHARED_DIR=/var/lib/disinto/claude-sharedandCLAUDE_CONFIG_DIR=/var/lib/disinto/claude-shared/configas the canonical shared layout. This issue updates the compose mounts to use it.Files to change
docker-compose.yml— servicesrunner(lines ~78-79),reproduce(line ~104),edge(lines ~119-120)Specification
For each of the three services (
runner,reproduce,edge):Replace the existing
.claudedirectory volume entry:with:
The shared dir is mounted at the same absolute path on host and container so
realpathresolution stays stable.Keep the
.claude.jsonro mount as-is — it's a settings file, unrelated to OAuth tokens:Add to each service's
environment:block (services usingenv_file: .envonly — likereproduce— pick this up automatically once.envhas the var):Do not modify any other volume entries (sockets, claude binary, ssh, project-repos, etc.).
Definition of done
docker compose configparses cleanlydisinto up runner(ordocker compose up runner) smoke test: container starts,echo $CLAUDE_CONFIG_DIRinside the container prints/var/lib/disinto/claude-shared/config,ls $CLAUDE_CONFIG_DIRshows the host's shared dir contents${HOME}/.claudedirectory mount remains (the.claude.jsonro mount stays — that's intentional)Out of scope / do not touch
lib/agent-sdk.shexternal flock wrapper (vision issue)docker/edge/dispatcher.sh(separate backlog issue)docker/agents/entrypoint.shcreds detection (separate backlog issue).claude.jsonro mountDependencies
Blocked by #641 (disinto init bootstraps CLAUDE_CONFIG_DIR). Do not start until that issue has merged and
lib/env.shexports the env vars.