mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 13:16:24 +00:00
* fix(make): name what make clean deletes and refuse under a live gateway `make help` described `make clean` as cleaning up "temporary files", but it deletes backend/.deer-flow: the local database, users, threads, uploads, memory, and secrets. Both Docker stacks mount that directory into the deer-flow-gateway container, and `make stop` only stops local services, so the data could be deleted under a running Gateway. Say what is deleted in the help text and before deleting, and refuse while the deer-flow-gateway container is running. The check runs before `make stop`, which would otherwise stop the running stack's sandboxes first; a missing or unreachable Docker passes. * docs(changelog): reference #6351 for the make clean guard * fix(make): share make clean's data list and pin stop before the delete The help line listed "database, threads, uploads, secrets" while the deletion notice also named users and memory. Define the list once in RUNTIME_DATA_CONTENTS and use it in both. Running sandbox containers left behind by `make down` are already stopped by `make stop` (serve.sh --stop reaps deer-flow-sandbox*), which runs after the guard and before the delete. Note that in the guard script, and pin the ordering: the stub stop now records that the data still exists. --------- Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
39 lines
1.7 KiB
Bash
Executable File
39 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# check-data-not-in-use.sh - Refuse while a DeerFlow Gateway container is running
|
|
#
|
|
# `make clean` deletes backend/.deer-flow, the runtime data directory (database,
|
|
# users, threads, uploads, secrets). Both Docker stacks mount it into the
|
|
# Gateway container: docker-compose.yaml mounts ${DEER_FLOW_HOME} (default
|
|
# backend/.deer-flow) and docker-compose-dev.yaml mounts ../backend/. `make stop`
|
|
# only stops local services, so deleting the directory under a running Gateway
|
|
# would pull its open database out from under it.
|
|
#
|
|
# Exits 0 when Docker is missing or unreachable: no container can then be
|
|
# holding this checkout's data.
|
|
#
|
|
# Sandbox containers are not checked here: AIO/DooD sandboxes bind-mount thread
|
|
# directories under the same tree, but `make clean` runs `make stop` after this
|
|
# check and before deleting, and `serve.sh --stop` stops every
|
|
# deer-flow-sandbox* container (as `make docker-stop` does). Checking them here
|
|
# would refuse the ordinary local AIO case that stop already cleans up.
|
|
|
|
set -e
|
|
|
|
GATEWAY_CONTAINER="deer-flow-gateway"
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
exit 0
|
|
fi
|
|
|
|
# Match the exact name: `docker ps --filter name=` is a substring match. Docker
|
|
# on Windows may end lines with CRLF.
|
|
if ! names=$(docker ps --format '{{.Names}}' 2>/dev/null); then
|
|
exit 0
|
|
fi
|
|
if printf '%s\n' "$names" | tr -d '\r' | grep -qx "$GATEWAY_CONTAINER"; then
|
|
echo "Refusing to delete DeerFlow runtime data: the $GATEWAY_CONTAINER container is running, and both Docker stacks mount backend/.deer-flow into it." >&2
|
|
echo "Stop the Docker stack first (make down, or make docker-stop for the dev stack), then run make clean again." >&2
|
|
exit 1
|
|
fi
|