mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-03 06:12:14 +08:00
* Adds Kubernetes sandbox provisioner support * Improves Docker dev setup by standardizing host paths Replaces hardcoded host paths with a configurable root directory, making the development environment more portable and easier to use across different machines. Automatically sets the root path if not already defined, reducing manual setup steps.
178 lines
4.9 KiB
Bash
Executable File
178 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Get script directory
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
DOCKER_DIR="$PROJECT_ROOT/docker"
|
|
|
|
# Docker Compose command with project name
|
|
COMPOSE_CMD="docker compose -p deer-flow-dev -f docker-compose-dev.yaml"
|
|
|
|
# Cleanup function for Ctrl+C
|
|
cleanup() {
|
|
echo ""
|
|
echo -e "${YELLOW}Operation interrupted by user${NC}"
|
|
exit 130
|
|
}
|
|
|
|
# Set up trap for Ctrl+C
|
|
trap cleanup INT TERM
|
|
|
|
# Initialize: pre-pull the sandbox image so first Pod startup is fast
|
|
init() {
|
|
echo "=========================================="
|
|
echo " DeerFlow Init — Pull Sandbox Image"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
SANDBOX_IMAGE="enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:latest"
|
|
|
|
if ! docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "^${SANDBOX_IMAGE}$"; then
|
|
echo -e "${BLUE}Pulling sandbox image: $SANDBOX_IMAGE ...${NC}"
|
|
docker pull "$SANDBOX_IMAGE"
|
|
else
|
|
echo -e "${GREEN}Sandbox image already exists locally: $SANDBOX_IMAGE${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}✓ Sandbox image is ready.${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Next step: make docker-start${NC}"
|
|
}
|
|
|
|
# Start Docker development environment
|
|
start() {
|
|
echo "=========================================="
|
|
echo " Starting DeerFlow Docker Development"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Set DEER_FLOW_ROOT for provisioner if not already set
|
|
if [ -z "$DEER_FLOW_ROOT" ]; then
|
|
export DEER_FLOW_ROOT="$PROJECT_ROOT"
|
|
echo -e "${BLUE}Setting DEER_FLOW_ROOT=$DEER_FLOW_ROOT${NC}"
|
|
echo ""
|
|
fi
|
|
|
|
echo "Building and starting containers..."
|
|
cd "$DOCKER_DIR" && $COMPOSE_CMD up --build -d --remove-orphans
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " DeerFlow Docker is starting!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo " 🌐 Application: http://localhost:2026"
|
|
echo " 📡 API Gateway: http://localhost:2026/api/*"
|
|
echo " 🤖 LangGraph: http://localhost:2026/api/langgraph/*"
|
|
echo ""
|
|
echo " 📋 View logs: make docker-logs"
|
|
echo " 🛑 Stop: make docker-stop"
|
|
echo ""
|
|
}
|
|
|
|
# View Docker development logs
|
|
logs() {
|
|
local service=""
|
|
|
|
case "$1" in
|
|
--frontend)
|
|
service="frontend"
|
|
echo -e "${BLUE}Viewing frontend logs...${NC}"
|
|
;;
|
|
--gateway)
|
|
service="gateway"
|
|
echo -e "${BLUE}Viewing gateway logs...${NC}"
|
|
;;
|
|
--nginx)
|
|
service="nginx"
|
|
echo -e "${BLUE}Viewing nginx logs...${NC}"
|
|
;;
|
|
"")
|
|
echo -e "${BLUE}Viewing all logs...${NC}"
|
|
;;
|
|
*)
|
|
echo -e "${YELLOW}Unknown option: $1${NC}"
|
|
echo "Usage: $0 logs [--frontend|--gateway]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
cd "$DOCKER_DIR" && $COMPOSE_CMD logs -f $service
|
|
}
|
|
|
|
# Stop Docker development environment
|
|
stop() {
|
|
echo "Stopping Docker development services..."
|
|
cd "$DOCKER_DIR" && $COMPOSE_CMD down
|
|
echo -e "${GREEN}✓ Docker services stopped${NC}"
|
|
}
|
|
|
|
# Restart Docker development environment
|
|
restart() {
|
|
echo "========================================"
|
|
echo " Restarting DeerFlow Docker Services"
|
|
echo "========================================"
|
|
echo ""
|
|
echo -e "${BLUE}Restarting containers...${NC}"
|
|
cd "$DOCKER_DIR" && $COMPOSE_CMD restart
|
|
echo ""
|
|
echo -e "${GREEN}✓ Docker services restarted${NC}"
|
|
echo ""
|
|
echo " 🌐 Application: http://localhost:2026"
|
|
echo " 📋 View logs: make docker-dev-logs"
|
|
echo ""
|
|
}
|
|
|
|
# Show help
|
|
help() {
|
|
echo "DeerFlow Docker Management Script"
|
|
echo ""
|
|
echo "Usage: $0 <command> [options]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " init - Pull the sandbox image (speeds up first Pod startup)"
|
|
echo " start - Start all services in Docker (localhost:2026)"
|
|
echo " restart - Restart all running Docker services"
|
|
echo " logs [option] - View Docker development logs"
|
|
echo " --frontend View frontend logs only"
|
|
echo " --gateway View gateway logs only"
|
|
echo " stop - Stop Docker development services"
|
|
echo " help - Show this help message"
|
|
echo ""
|
|
}
|
|
|
|
# Main command dispatcher
|
|
case "$1" in
|
|
init)
|
|
init
|
|
;;
|
|
start)
|
|
start
|
|
;;
|
|
restart)
|
|
restart
|
|
;;
|
|
logs)
|
|
logs "$2"
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
help|--help|-h|"")
|
|
help
|
|
;;
|
|
*)
|
|
echo -e "${YELLOW}Unknown command: $1${NC}"
|
|
echo ""
|
|
help
|
|
exit 1
|
|
;;
|
|
esac
|