# ============================================================================= # Windsurf Language Server — 独立 Compose 文件 # ============================================================================= # 启动方式: # docker compose -f docker-compose.yml -f docker-compose.windsurf.yml up -d # # 构建 LS 镜像: # 1. 将 language_server_linux_x64 放到 deploy/ 目录 # 2. docker compose -f docker-compose.yml -f docker-compose.windsurf.yml build windsurf-ls # # Multi-proxy:复制 windsurf-ls 服务并修改 LS_PORT 和 HTTPS_PROXY: # windsurf-ls-proxy1: # extends: { service: windsurf-ls } # environment: # - LS_PORT=42101 # - HTTPS_PROXY=http://user:pass@proxy1:8080 # - HTTP_PROXY=http://user:pass@proxy1:8080 # ports: ["42101:42101"] # ============================================================================= services: # 覆盖主服务:注入 LS 连接参数 + 添加依赖 sub2api: environment: - WINDSURF_ENABLED=true - WINDSURF_FIREBASE_API_KEY=${WINDSURF_FIREBASE_API_KEY:-AIzaSyDsOl-1XpT5err0Tcnx8FFod1H8gVGIycY} - WINDSURF_DOCKER_HOST=host.docker.internal - WINDSURF_DOCKER_PORT=${WINDSURF_LS_PORT:-42099} - WINDSURF_DOCKER_CSRF_TOKEN=${LS_CSRF_TOKEN:-ad2d9f01-4e7b-8c3a-b5f6-1d8e9a0c7b2f} - WINDSURF_LS_MODE=${WINDSURF_LS_MODE:-docker} depends_on: windsurf-ls: condition: service_healthy # =========================================================================== # Windsurf Language Server (local gRPC for Cascade chat) # Must use host network — LS validates CSRF tokens only from loopback. # =========================================================================== windsurf-ls: build: context: .. dockerfile: deploy/Dockerfile.ls image: windsurf-ls:latest container_name: sub2api-windsurf-ls restart: unless-stopped network_mode: host volumes: - windsurf_ls_data:/data environment: - LS_PORT=42099 - LS_CSRF_TOKEN=${LS_CSRF_TOKEN:-ad2d9f01-4e7b-8c3a-b5f6-1d8e9a0c7b2f} - LS_API_SERVER_URL=${LS_API_SERVER_URL:-https://server.self-serve.windsurf.com} - HTTPS_PROXY=${LS_HTTPS_PROXY:-} - HTTP_PROXY=${LS_HTTP_PROXY:-} - TZ=${TZ:-Asia/Shanghai} healthcheck: test: ["CMD", "nc", "-z", "localhost", "42099"] interval: 10s timeout: 3s retries: 5 start_period: 15s volumes: windsurf_ls_data: driver: local