Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
46 lines (44 loc) · 1.5 KB
/
Copy pathdocker-compose.yml
File metadata and controls
46 lines (44 loc) · 1.5 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
version: '3.8'
services:
claude-chat:
build:
context: .
args:
BASE_IMAGE: ${MIRROR:+${MIRROR}/}node:20-bookworm
container_name: claude-code-studio
restart: unless-stopped
ports:
- "${PORT:-3000}:3000"
volumes:
- chat-data:/app/data
- workspace:/app/workspace
- skills:/app/skills
- claude-home:/home/node/.claude
environment:
- PORT=3000
# Inside the container the app must listen on all interfaces, otherwise the
# published port above maps to nothing. The container boundary is the wall here.
- HOST=0.0.0.0
- WORKDIR=/app/workspace
# /app is an image layer — anything written there is lost when the container
# is recreated. config.json (every MCP server, skill and terminal setting the
# config UI writes) and .env therefore live on the data volume instead.
- CCS_CONFIG_PATH=/app/data/config.json
- CCS_ENV_PATH=/app/data/.env
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- NODE_ENV=production
- SESSION_SECRET=${SESSION_SECRET:-}
- TRUST_PROXY=${TRUST_PROXY:-false}
- ANTHROPIC_BASE_URL=${ANTHROPIC_BASE_URL:-}
- ANTHROPIC_AUTH_TOKEN=${ANTHROPIC_AUTH_TOKEN:-}
- CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=${CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS:-}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 5s
retries: 3
volumes:
chat-data:
workspace:
skills:
claude-home: