mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-03 06:12:14 +08:00
* fix(scripts): handle docker-init failures gracefully for private registry The make docker-init command was failing on Linux environments when users could not access the private Volces container registry. This commonly occurs in corporate intranet environments with proxies or for users without registry credentials. Changes: - Detect sandbox mode from config.yaml before attempting image pull - Skip image pull entirely for local sandbox mode (default) - Gracefully handle pull failures with informative messages - Update setup-sandbox Makefile target with same error handling Fixes #1168 * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: BillionClaw <billionclaw@users.noreply.github.com> Co-authored-by: Willem Jiang <willem.jiang@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
164 lines
5.6 KiB
Makefile
164 lines
5.6 KiB
Makefile
# DeerFlow - Unified Development Environment
|
|
|
|
.PHONY: help config config-upgrade check install dev dev-daemon start stop up down clean docker-init docker-start docker-stop docker-logs docker-logs-frontend docker-logs-gateway
|
|
|
|
PYTHON ?= python
|
|
|
|
help:
|
|
@echo "DeerFlow Development Commands:"
|
|
@echo " make config - Generate local config files (aborts if config already exists)"
|
|
@echo " make config-upgrade - Merge new fields from config.example.yaml into config.yaml"
|
|
@echo " make check - Check if all required tools are installed"
|
|
@echo " make install - Install all dependencies (frontend + backend)"
|
|
@echo " make setup-sandbox - Pre-pull sandbox container image (recommended)"
|
|
@echo " make dev - Start all services in development mode (with hot-reloading)"
|
|
@echo " make dev-daemon - Start all services in background (daemon mode)"
|
|
@echo " make start - Start all services in production mode (optimized, no hot-reloading)"
|
|
@echo " make stop - Stop all running services"
|
|
@echo " make clean - Clean up processes and temporary files"
|
|
@echo ""
|
|
@echo "Docker Production Commands:"
|
|
@echo " make up - Build and start production Docker services (localhost:2026)"
|
|
@echo " make down - Stop and remove production Docker containers"
|
|
@echo ""
|
|
@echo "Docker Development Commands:"
|
|
@echo " make docker-init - Pull the sandbox image"
|
|
@echo " make docker-start - Start Docker services (mode-aware from config.yaml, localhost:2026)"
|
|
@echo " make docker-stop - Stop Docker development services"
|
|
@echo " make docker-logs - View Docker development logs"
|
|
@echo " make docker-logs-frontend - View Docker frontend logs"
|
|
@echo " make docker-logs-gateway - View Docker gateway logs"
|
|
|
|
config:
|
|
@$(PYTHON) ./scripts/configure.py
|
|
|
|
config-upgrade:
|
|
@./scripts/config-upgrade.sh
|
|
|
|
# Check required tools
|
|
check:
|
|
@$(PYTHON) ./scripts/check.py
|
|
|
|
# Install all dependencies
|
|
install:
|
|
@echo "Installing backend dependencies..."
|
|
@cd backend && uv sync
|
|
@echo "Installing frontend dependencies..."
|
|
@cd frontend && pnpm install
|
|
@echo "✓ All dependencies installed"
|
|
@echo ""
|
|
@echo "=========================================="
|
|
@echo " Optional: Pre-pull Sandbox Image"
|
|
@echo "=========================================="
|
|
@echo ""
|
|
@echo "If you plan to use Docker/Container-based sandbox, you can pre-pull the image:"
|
|
@echo " make setup-sandbox"
|
|
@echo ""
|
|
|
|
# Pre-pull sandbox Docker image (optional but recommended)
|
|
setup-sandbox:
|
|
@echo "=========================================="
|
|
@echo " Pre-pulling Sandbox Container Image"
|
|
@echo "=========================================="
|
|
@echo ""
|
|
@IMAGE=$$(grep -A 20 "# sandbox:" config.yaml 2>/dev/null | grep "image:" | awk '{print $$2}' | head -1); \
|
|
if [ -z "$$IMAGE" ]; then \
|
|
IMAGE="enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:latest"; \
|
|
echo "Using default image: $$IMAGE"; \
|
|
else \
|
|
echo "Using configured image: $$IMAGE"; \
|
|
fi; \
|
|
echo ""; \
|
|
if command -v container >/dev/null 2>&1 && [ "$$(uname)" = "Darwin" ]; then \
|
|
echo "Detected Apple Container on macOS, pulling image..."; \
|
|
container pull "$$IMAGE" || echo "⚠ Apple Container pull failed, will try Docker"; \
|
|
fi; \
|
|
if command -v docker >/dev/null 2>&1; then \
|
|
echo "Pulling image using Docker..."; \
|
|
if docker pull "$$IMAGE"; then \
|
|
echo ""; \
|
|
echo "✓ Sandbox image pulled successfully"; \
|
|
else \
|
|
echo ""; \
|
|
echo "⚠ Failed to pull sandbox image (this is OK for local sandbox mode)"; \
|
|
fi; \
|
|
else \
|
|
echo "✗ Neither Docker nor Apple Container is available"; \
|
|
echo " Please install Docker: https://docs.docker.com/get-docker/"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# Start all services in development mode (with hot-reloading)
|
|
dev:
|
|
@./scripts/serve.sh --dev
|
|
|
|
# Start all services in production mode (with optimizations)
|
|
start:
|
|
@./scripts/serve.sh --prod
|
|
|
|
# Start all services in daemon mode (background)
|
|
dev-daemon:
|
|
@./scripts/start-daemon.sh
|
|
|
|
# Stop all services
|
|
stop:
|
|
@echo "Stopping all services..."
|
|
@-pkill -f "langgraph dev" 2>/dev/null || true
|
|
@-pkill -f "uvicorn app.gateway.app:app" 2>/dev/null || true
|
|
@-pkill -f "next dev" 2>/dev/null || true
|
|
@-pkill -f "next start" 2>/dev/null || true
|
|
@-pkill -f "next-server" 2>/dev/null || true
|
|
@-pkill -f "next-server" 2>/dev/null || true
|
|
@-nginx -c $(PWD)/docker/nginx/nginx.local.conf -p $(PWD) -s quit 2>/dev/null || true
|
|
@sleep 1
|
|
@-pkill -9 nginx 2>/dev/null || true
|
|
@echo "Cleaning up sandbox containers..."
|
|
@-./scripts/cleanup-containers.sh deer-flow-sandbox 2>/dev/null || true
|
|
@echo "✓ All services stopped"
|
|
|
|
# Clean up
|
|
clean: stop
|
|
@echo "Cleaning up..."
|
|
@-rm -rf backend/.deer-flow 2>/dev/null || true
|
|
@-rm -rf backend/.langgraph_api 2>/dev/null || true
|
|
@-rm -rf logs/*.log 2>/dev/null || true
|
|
@echo "✓ Cleanup complete"
|
|
|
|
# ==========================================
|
|
# Docker Development Commands
|
|
# ==========================================
|
|
|
|
# Initialize Docker containers and install dependencies
|
|
docker-init:
|
|
@./scripts/docker.sh init
|
|
|
|
# Start Docker development environment
|
|
docker-start:
|
|
@./scripts/docker.sh start
|
|
|
|
# Stop Docker development environment
|
|
docker-stop:
|
|
@./scripts/docker.sh stop
|
|
|
|
# View Docker development logs
|
|
docker-logs:
|
|
@./scripts/docker.sh logs
|
|
|
|
# View Docker development logs
|
|
docker-logs-frontend:
|
|
@./scripts/docker.sh logs --frontend
|
|
docker-logs-gateway:
|
|
@./scripts/docker.sh logs --gateway
|
|
|
|
# ==========================================
|
|
# Production Docker Commands
|
|
# ==========================================
|
|
|
|
# Build and start production services
|
|
up:
|
|
@./scripts/deploy.sh
|
|
|
|
# Stop and remove production containers
|
|
down:
|
|
@./scripts/deploy.sh down
|