forked from guanxiaol/WindsurfPoolAPI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
47 lines (46 loc) · 1.79 KB
/
docker-compose.yml
File metadata and controls
47 lines (46 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
services:
windsurfapi:
build: .
image: windsurfapi:latest
container_name: windsurfapi
restart: unless-stopped
ports:
- "3003:3003"
environment:
PORT: 3003
LS_PORT: 42100
LS_BINARY_PATH: /opt/windsurf/language_server_linux_x64
DEFAULT_MODEL: gpt-4o-mini
MAX_TOKENS: 8192
LOG_LEVEL: info
# Set a password to protect the dashboard. Leave empty for open access.
DASHBOARD_PASSWORD: ""
# Optional — require an API key for /v1/* endpoints.
API_KEY: ""
volumes:
# Mount the Windsurf Language Server binary from the host. The binary is
# closed-source Windsurf and cannot be baked into the image.
- /opt/windsurf:/opt/windsurf:ro
# Persist runtime state across container restarts.
# NOTE: If you bind-mount host files here, make sure they're readable/
# writable by UID 101 (alpine 'app' user):
# touch accounts.json stats.json runtime-config.json proxy-config.json model-access.json
# chown 101:101 *.json
- ./accounts.json:/app/accounts.json
- ./stats.json:/app/stats.json
- ./runtime-config.json:/app/runtime-config.json
- ./proxy-config.json:/app/proxy-config.json
- ./model-access.json:/app/model-access.json
# Named volume for logs — Docker initialises the volume with the image's
# existing /app/logs ownership (app:app), so writes never hit EACCES.
# Avoids the classic "bind-mount ./logs is root-owned, container runs as
# app" footgun. If you prefer a host path, set LOG_DIR to a writable one.
- windsurfapi-logs:/app/logs
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3003/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
volumes:
windsurfapi-logs: