fix: keep docker home volume mounts
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
- Providers: unify group history context wrappers across providers with per-provider/per-account `historyLimit` overrides (fallback to `messages.groupChat.historyLimit`). Set `0` to disable. (#672) — thanks @steipete.
|
- Providers: unify group history context wrappers across providers with per-provider/per-account `historyLimit` overrides (fallback to `messages.groupChat.historyLimit`). Set `0` to disable. (#672) — thanks @steipete.
|
||||||
- CLI: add `clawdbot update` (safe-ish git checkout update) + `--update` shorthand. (#673) — thanks @fm1randa.
|
- CLI: add `clawdbot update` (safe-ish git checkout update) + `--update` shorthand. (#673) — thanks @fm1randa.
|
||||||
- Gateway: add OpenAI-compatible `/v1/chat/completions` HTTP endpoint (auth, SSE streaming, per-agent routing). (#680) — thanks @steipete.
|
- Gateway: add OpenAI-compatible `/v1/chat/completions` HTTP endpoint (auth, SSE streaming, per-agent routing). (#680) — thanks @steipete.
|
||||||
|
- Docker: allow optional home volume + extra bind mounts in `docker-setup.sh`. (#679) — thanks @gabriel-trigo.
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- macOS: stabilize bridge tunnels, guard invoke senders on disconnect, and drain stdout/stderr to avoid deadlocks. (#676) — thanks @ngutman.
|
- macOS: stabilize bridge tunnels, guard invoke senders on disconnect, and drain stdout/stderr to avoid deadlocks. (#676) — thanks @ngutman.
|
||||||
|
|||||||
@@ -48,14 +48,11 @@ COMPOSE_FILES=("$COMPOSE_FILE")
|
|||||||
COMPOSE_ARGS=()
|
COMPOSE_ARGS=()
|
||||||
|
|
||||||
write_extra_compose() {
|
write_extra_compose() {
|
||||||
local mounts_csv="$1"
|
local home_volume="$1"
|
||||||
local home_volume="$2"
|
shift
|
||||||
local -a mounts=()
|
local -a mounts=("$@")
|
||||||
local mount
|
local mount
|
||||||
|
|
||||||
# Split on commas; ignore empty entries.
|
|
||||||
IFS=',' read -r -a mounts <<<"$mounts_csv"
|
|
||||||
|
|
||||||
cat >"$EXTRA_COMPOSE_FILE" <<'YAML'
|
cat >"$EXTRA_COMPOSE_FILE" <<'YAML'
|
||||||
services:
|
services:
|
||||||
clawdbot-gateway:
|
clawdbot-gateway:
|
||||||
@@ -64,14 +61,11 @@ YAML
|
|||||||
|
|
||||||
if [[ -n "$home_volume" ]]; then
|
if [[ -n "$home_volume" ]]; then
|
||||||
printf ' - %s:/home/node\n' "$home_volume" >>"$EXTRA_COMPOSE_FILE"
|
printf ' - %s:/home/node\n' "$home_volume" >>"$EXTRA_COMPOSE_FILE"
|
||||||
|
printf ' - %s:/home/node/.clawdbot\n' "$CLAWDBOT_CONFIG_DIR" >>"$EXTRA_COMPOSE_FILE"
|
||||||
|
printf ' - %s:/home/node/clawd\n' "$CLAWDBOT_WORKSPACE_DIR" >>"$EXTRA_COMPOSE_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for mount in "${mounts[@]}"; do
|
for mount in "${mounts[@]}"; do
|
||||||
mount="${mount#"${mount%%[![:space:]]*}"}"
|
|
||||||
mount="${mount%"${mount##*[![:space:]]}"}"
|
|
||||||
if [[ -z "$mount" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
printf ' - %s\n' "$mount" >>"$EXTRA_COMPOSE_FILE"
|
printf ' - %s\n' "$mount" >>"$EXTRA_COMPOSE_FILE"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -82,18 +76,15 @@ YAML
|
|||||||
|
|
||||||
if [[ -n "$home_volume" ]]; then
|
if [[ -n "$home_volume" ]]; then
|
||||||
printf ' - %s:/home/node\n' "$home_volume" >>"$EXTRA_COMPOSE_FILE"
|
printf ' - %s:/home/node\n' "$home_volume" >>"$EXTRA_COMPOSE_FILE"
|
||||||
|
printf ' - %s:/home/node/.clawdbot\n' "$CLAWDBOT_CONFIG_DIR" >>"$EXTRA_COMPOSE_FILE"
|
||||||
|
printf ' - %s:/home/node/clawd\n' "$CLAWDBOT_WORKSPACE_DIR" >>"$EXTRA_COMPOSE_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for mount in "${mounts[@]}"; do
|
for mount in "${mounts[@]}"; do
|
||||||
mount="${mount#"${mount%%[![:space:]]*}"}"
|
|
||||||
mount="${mount%"${mount##*[![:space:]]}"}"
|
|
||||||
if [[ -z "$mount" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
printf ' - %s\n' "$mount" >>"$EXTRA_COMPOSE_FILE"
|
printf ' - %s\n' "$mount" >>"$EXTRA_COMPOSE_FILE"
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ -n "$home_volume" ]]; then
|
if [[ -n "$home_volume" && "$home_volume" != *"/"* ]]; then
|
||||||
cat >>"$EXTRA_COMPOSE_FILE" <<YAML
|
cat >>"$EXTRA_COMPOSE_FILE" <<YAML
|
||||||
volumes:
|
volumes:
|
||||||
${home_volume}:
|
${home_volume}:
|
||||||
@@ -101,8 +92,20 @@ YAML
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ -n "$EXTRA_MOUNTS" || -n "$HOME_VOLUME_NAME" ]]; then
|
VALID_MOUNTS=()
|
||||||
write_extra_compose "$EXTRA_MOUNTS" "$HOME_VOLUME_NAME"
|
if [[ -n "$EXTRA_MOUNTS" ]]; then
|
||||||
|
IFS=',' read -r -a mounts <<<"$EXTRA_MOUNTS"
|
||||||
|
for mount in "${mounts[@]}"; do
|
||||||
|
mount="${mount#"${mount%%[![:space:]]*}"}"
|
||||||
|
mount="${mount%"${mount##*[![:space:]]}"}"
|
||||||
|
if [[ -n "$mount" ]]; then
|
||||||
|
VALID_MOUNTS+=("$mount")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$HOME_VOLUME_NAME" || ${#VALID_MOUNTS[@]} -gt 0 ]]; then
|
||||||
|
write_extra_compose "$HOME_VOLUME_NAME" "${VALID_MOUNTS[@]}"
|
||||||
COMPOSE_FILES+=("$EXTRA_COMPOSE_FILE")
|
COMPOSE_FILES+=("$EXTRA_COMPOSE_FILE")
|
||||||
fi
|
fi
|
||||||
for compose_file in "${COMPOSE_FILES[@]}"; do
|
for compose_file in "${COMPOSE_FILES[@]}"; do
|
||||||
|
|||||||
@@ -79,12 +79,15 @@ Notes:
|
|||||||
- Paths must be shared with Docker Desktop on macOS/Windows.
|
- Paths must be shared with Docker Desktop on macOS/Windows.
|
||||||
- If you edit `CLAWDBOT_EXTRA_MOUNTS`, rerun `docker-setup.sh` to regenerate the
|
- If you edit `CLAWDBOT_EXTRA_MOUNTS`, rerun `docker-setup.sh` to regenerate the
|
||||||
extra compose file.
|
extra compose file.
|
||||||
|
- `docker-compose.extra.yml` is generated. Don’t hand-edit it.
|
||||||
|
|
||||||
### Persist the entire container home (optional)
|
### Persist the entire container home (optional)
|
||||||
|
|
||||||
If you want `/home/node` to persist across container recreation, set a named
|
If you want `/home/node` to persist across container recreation, set a named
|
||||||
volume via `CLAWDBOT_HOME_VOLUME`. This creates a Docker volume and mounts it at
|
volume via `CLAWDBOT_HOME_VOLUME`. This creates a Docker volume and mounts it at
|
||||||
`/home/node`, while keeping the standard config/workspace bind mounts.
|
`/home/node`, while keeping the standard config/workspace bind mounts. Use a
|
||||||
|
named volume here (not a bind path); for bind mounts, use
|
||||||
|
`CLAWDBOT_EXTRA_MOUNTS`.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user