143 lines
3.8 KiB
YAML
143 lines
3.8 KiB
YAML
name: ai-toolbox
|
|
|
|
services:
|
|
ai-tools:
|
|
image: local/ai-toolbox:${AI_TOOLS_IMAGE_TAG:-0.2.0}
|
|
container_name: ${AI_CONTAINER_NAME:-ai-tools}
|
|
build:
|
|
context: .
|
|
args:
|
|
AI_UID: ${AI_UID:-1000}
|
|
AI_GID: ${AI_GID:-1000}
|
|
CODEX_VERSION: ${CODEX_VERSION:-latest}
|
|
CLAUDE_VERSION: ${CLAUDE_VERSION:-latest}
|
|
CODEBUDDY_VERSION: ${CODEBUDDY_VERSION:-latest}
|
|
KIMI_VERSION: ${KIMI_VERSION:-latest}
|
|
OPENCODE_VERSION: ${OPENCODE_VERSION:-latest}
|
|
QWEN_VERSION: ${QWEN_VERSION:-latest}
|
|
DSH_VERSION: ${DSH_VERSION:-latest}
|
|
CC_SWITCH_VERSION: ${CC_SWITCH_VERSION:-v5.10.2}
|
|
MULTICA_VERSION: ${MULTICA_VERSION:-v0.1.53}
|
|
tty: true
|
|
stdin_open: true
|
|
restart: unless-stopped
|
|
working_dir: /workspace
|
|
environment:
|
|
TZ: ${TZ:-Asia/Shanghai}
|
|
TERM: xterm-256color
|
|
COLORTERM: truecolor
|
|
RUNNER_PORT: 4174
|
|
RUNNER_TOKEN: ${RUNNER_TOKEN:?RUNNER_TOKEN is required}
|
|
WORKSPACE_ROOT: /workspace
|
|
SESSION_DIRECTORY: /home/ai/.ai-console/sessions
|
|
MULTICA_ENABLED: ${MULTICA_ENABLED:-true}
|
|
MULTICA_DAEMON_MAX_CONCURRENT_TASKS: ${MULTICA_DAEMON_MAX_CONCURRENT_TASKS:-2}
|
|
MULTICA_AGENT_RUNTIME_NAME: ${MULTICA_AGENT_RUNTIME_NAME:-AgentDock Ubuntu Runtime}
|
|
volumes:
|
|
- type: bind
|
|
source: ${WORKSPACE_PATH:-/srv/projects}
|
|
target: /workspace
|
|
- type: bind
|
|
source: ${AI_HOME_PATH:-./data}
|
|
target: /home/ai
|
|
networks:
|
|
- runner
|
|
- egress
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
pids_limit: 2048
|
|
mem_limit: ${AI_TOOLS_MEMORY_LIMIT:-6g}
|
|
cpus: ${AI_TOOLS_CPU_LIMIT:-4.0}
|
|
stop_grace_period: 30s
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:4174/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 20s
|
|
|
|
ai-console:
|
|
image: local/agentdock-console:${CONSOLE_IMAGE_TAG:-0.1.0}
|
|
build:
|
|
context: ./console
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: ${TZ:-Asia/Shanghai}
|
|
CONSOLE_PORT: 4173
|
|
RUNNER_URL: http://ai-tools:4174
|
|
RUNNER_TOKEN: ${RUNNER_TOKEN:?RUNNER_TOKEN is required}
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD is required}
|
|
CONFIG_ENCRYPTION_KEY: ${CONFIG_ENCRYPTION_KEY:?CONFIG_ENCRYPTION_KEY is required}
|
|
CONSOLE_DATA_DIRECTORY: /data
|
|
volumes:
|
|
- type: bind
|
|
source: ${CONSOLE_DATA_PATH:-./console-data}
|
|
target: /data
|
|
networks:
|
|
- frontend
|
|
- runner
|
|
depends_on:
|
|
ai-tools:
|
|
condition: service_healthy
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
pids_limit: 256
|
|
mem_limit: ${CONSOLE_MEMORY_LIMIT:-512m}
|
|
cpus: ${CONSOLE_CPU_LIMIT:-1.0}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:4173/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
ai-proxy:
|
|
image: caddy:2.10.2-alpine
|
|
restart: unless-stopped
|
|
ports:
|
|
- "192.168.200.36:${CONSOLE_HTTPS_PORT:-8443}:443"
|
|
volumes:
|
|
- ./proxy/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- ./proxy/certs:/etc/caddy/certs:ro
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
networks:
|
|
- frontend
|
|
- edge
|
|
depends_on:
|
|
ai-console:
|
|
condition: service_healthy
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
cap_add:
|
|
- NET_BIND_SERVICE
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp
|
|
- /config/caddy
|
|
mem_limit: 256m
|
|
cpus: 0.5
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-check-certificate", "-qO-", "https://127.0.0.1/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
networks:
|
|
frontend:
|
|
internal: true
|
|
runner:
|
|
internal: true
|
|
egress:
|
|
edge:
|
|
|
|
volumes:
|
|
caddy_data:
|
|
caddy_config:
|