Add Kubernetes-based sandbox provider for multi-instance support (#19)

* feat: adds docker-based dev environment

* docs: updates Docker command help

* fix local dev

* feat(sandbox): add Kubernetes-based sandbox provider for multi-instance support

* fix: skills path in k8s

* feat: add example config for k8s sandbox

* fix: docker config

* fix: load skills on docker dev

* feat: support sandbox execution to Kubernetes Deployment model

* chore: rename web service name
This commit is contained in:
JeffJiang
2026-02-09 21:59:13 +08:00
committed by GitHub
parent 69c8b41186
commit 7b7e32f262
20 changed files with 981 additions and 94 deletions

View File

@@ -3,8 +3,8 @@
#
# Services:
# - nginx: Reverse proxy (port 2026)
# - web: Frontend Next.js dev server (port 3000)
# - api: Backend Gateway API (port 8001)
# - frontend: Frontend Next.js dev server (port 3000)
# - gateway: Backend Gateway API (port 8001)
# - langgraph: LangGraph server (port 2024)
#
# Access: http://localhost:2026
@@ -19,29 +19,34 @@ services:
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- web
- api
- frontend
- gateway
- langgraph
networks:
- deer-flow-dev
restart: unless-stopped
# Frontend - Next.js Development Server
web:
frontend:
build:
context: ../frontend
dockerfile: Dockerfile
context: ../
dockerfile: frontend/Dockerfile
args:
PNPM_STORE_PATH: ${PNPM_STORE_PATH:-/root/.local/share/pnpm/store}
container_name: deer-flow-web
command: pnpm run dev
container_name: deer-flow-frontend
command: sh -c "cd frontend && pnpm run dev > /app/logs/frontend.log 2>&1"
volumes:
- ../frontend:/app
- ../frontend/src:/app/frontend/src
- ../frontend/public:/app/frontend/public
- ../frontend/next.config.js:/app/frontend/next.config.js:ro
- ../logs:/app/logs
# Mount pnpm store for caching
- ${PNPM_STORE_PATH:-~/.local/share/pnpm/store}:/root/.local/share/pnpm/store
working_dir: /app
environment:
- NODE_ENV=development
- WATCHPACK_POLLING=true
- CI=true
env_file:
- ../frontend/.env
networks:
@@ -49,17 +54,26 @@ services:
restart: unless-stopped
# Backend - Gateway API
api:
gateway:
build:
context: ../backend
dockerfile: Dockerfile
container_name: deer-flow-api
command: uv run uvicorn src.gateway.app:app --host 0.0.0.0 --port 8001 --reload
context: ../
dockerfile: backend/Dockerfile
container_name: deer-flow-gateway
command: sh -c "cd backend && uv run uvicorn src.gateway.app:app --host 0.0.0.0 --port 8001 --reload --reload-include='*.yaml .env' > /app/logs/gateway.log 2>&1"
volumes:
- ../backend:/app
- ../config.yaml:/app/config.yaml:ro
- ../backend/src:/app/backend/src
- ../backend/.env:/app/backend/.env
- ../config.yaml:/app/config.yaml
- ../skills:/app/skills
- ../logs:/app/logs
working_dir: /app
environment:
- CI=true
env_file:
- ../backend/.env
extra_hosts:
# For Linux: map host.docker.internal to host gateway
- "host.docker.internal:host-gateway"
networks:
- deer-flow-dev
restart: unless-stopped
@@ -67,13 +81,19 @@ services:
# Backend - LangGraph Server
langgraph:
build:
context: ../backend
dockerfile: Dockerfile
context: ../
dockerfile: backend/Dockerfile
container_name: deer-flow-langgraph
command: uv run langgraph dev --no-browser --allow-blocking --no-reload --host 0.0.0.0 --port 2024
command: sh -c "cd backend && uv run langgraph dev --no-browser --allow-blocking --host 0.0.0.0 --port 2024 > /app/logs/langgraph.log 2>&1"
volumes:
- ../backend:/app
- ../config.yaml:/app/config.yaml:ro
- ../backend/src:/app/backend/src
- ../backend/.env:/app/backend/.env
- ../config.yaml:/app/config.yaml
- ../skills:/app/skills
- ../logs:/app/logs
working_dir: /app
environment:
- CI=true
env_file:
- ../backend/.env
networks: