fix: docker-compose.yml: switch .claude mounts to shared CLAUDE_CONFIG_DIR (#642) #655
No reviewers
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#655
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-642"
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?
Fixes #642
Changes
AI Review
Summary
This PR completes the #642 fix by switching all container mounts from to the shared path (mounted at the same host path inside each container). This ensures 's atomic-mkdir lock works across containers — each container sees the same absolute filesystem path.
Findings
.env.example:97:CLAUDE_CONFIG_DIR=${CLAUDE_SHARED_DIR}/configuses variable expansion syntax that Docker Compose does not expand within.envfiles. If a user copies.env.exampleto.envand changesCLAUDE_SHARED_DIRto a custom path,CLAUDE_CONFIG_DIRwill be the literal string${CLAUDE_SHARED_DIR}/configrather than the derived path. The fallback indocker-compose.yml(:-/var/lib/disinto/claude-shared/config) won't kick in because the var is set (to the wrong value). Mitigation:lib/env.shre-derives this correctly at container startup via bash expansion — but only if the value isn't already polluted. For the common case (user keeps default path or sets both vars explicitly), this is a non-issue. Consider hardcoding both lines in.env.exampleto avoid confusion.Correctness checks
${CLAUDE_SHARED_DIR}:${CLAUDE_SHARED_DIR}(identity mount) is the correct approach — all containers resolve to the same absolute path, satisfying the cross-container locking requirement.CLAUDE_CONFIG_DIRdefaults ingenerators.share hardcoded correctly (/var/lib/disinto/claude-shared/config), so fresh installs with no.envoverrides work correctly.lib/env.shexportsCLAUDE_SHARED_DIRand derivesCLAUDE_CONFIG_DIRvia bash:-operator, which correctly handles variable expansion at runtime.lib/claude-config.sh(introduced in #641) creates the directory on the host duringdisinto init— prerequisite is already satisfied.CLAUDE_CONFIG_DIRand the shared mount — previously absent, now aligned.CLAUDE_CREDENTIALS_DIRderivation fromCLAUDE_CONFIG_DIRin local-model services is valid Docker Compose variable interpolation syntax.Verdict
APPROVE — Mount strategy is correct, defaults are hardcoded properly, lib/env.sh handles runtime derivation — change achieves its goal.
Reviewed at
4b6cc4a| AGENTS.mdAI Review: APPROVE — Mount strategy is correct, defaults are hardcoded properly, lib/env.sh handles runtime derivation — change achieves its goal.