|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| x-common: &common
|
| restart: unless-stopped
|
| stop_grace_period: 40s
|
| env_file: .env
|
| environment:
|
| - DATA_DIR=/app/data
|
| - PORT=${PORT:-20128}
|
| - DASHBOARD_PORT=${DASHBOARD_PORT:-20128}
|
| - API_PORT=${API_PORT:-20129}
|
| - API_HOST=${API_HOST:-0.0.0.0}
|
| - REDIS_URL=${REDIS_URL:-redis://redis:6379}
|
| volumes:
|
| - ./data:/app/data
|
| healthcheck:
|
| test: ["CMD", "node", "healthcheck.mjs"]
|
| interval: 30s
|
| timeout: 5s
|
| retries: 3
|
| start_period: 15s
|
|
|
| services:
|
|
|
| redis:
|
| image: docker.io/library/redis:7-alpine
|
| container_name: omniroute-redis
|
| restart: unless-stopped
|
| ports:
|
| - "${REDIS_PORT:-6379}:6379"
|
| volumes:
|
| - redis-data:/data
|
| command: redis-server --save 60 1 --loglevel warning
|
| healthcheck:
|
| test: ["CMD", "redis-cli", "ping"]
|
| interval: 10s
|
| timeout: 5s
|
| retries: 3
|
|
|
|
|
| omniroute-base:
|
| <<: *common
|
| container_name: omniroute
|
| build:
|
| context: .
|
| target: runner-base
|
| image: omniroute:base
|
| ports:
|
| - "${DASHBOARD_PORT:-20128}:${DASHBOARD_PORT:-20128}"
|
| - "${API_PORT:-20129}:${API_PORT:-20129}"
|
| profiles:
|
| - base
|
|
|
|
|
|
|
|
|
|
|
| omniroute-web:
|
| <<: *common
|
| container_name: omniroute
|
| build:
|
| context: .
|
| target: runner-web
|
| image: omniroute:web
|
| ports:
|
| - "${DASHBOARD_PORT:-20128}:${DASHBOARD_PORT:-20128}"
|
| - "${API_PORT:-20129}:${API_PORT:-20129}"
|
| profiles:
|
| - web
|
|
|
|
|
| omniroute-cli:
|
| <<: *common
|
| container_name: omniroute
|
| build:
|
| context: .
|
| target: runner-cli
|
| image: omniroute:cli
|
| ports:
|
| - "${DASHBOARD_PORT:-20128}:${DASHBOARD_PORT:-20128}"
|
| - "${API_PORT:-20129}:${API_PORT:-20129}"
|
| volumes:
|
| - ./data:/app/data
|
| - /var/run/docker.sock:/var/run/docker.sock
|
| - /usr/libexec/docker/cli-plugins:/usr/libexec/docker/cli-plugins:ro
|
| - ${AUTO_UPDATE_HOST_REPO_DIR:-.}:/workspace/omniroute:rw
|
| profiles:
|
| - cli
|
|
|
|
|
| omniroute-host:
|
| <<: *common
|
| container_name: omniroute
|
| build:
|
| context: .
|
| target: runner-base
|
| image: omniroute:base
|
| ports:
|
| - "${DASHBOARD_PORT:-20128}:${DASHBOARD_PORT:-20128}"
|
| - "${API_PORT:-20129}:${API_PORT:-20129}"
|
| environment:
|
| - DATA_DIR=/app/data
|
| - PORT=${PORT:-20128}
|
| - DASHBOARD_PORT=${DASHBOARD_PORT:-20128}
|
| - API_PORT=${API_PORT:-20129}
|
| - API_HOST=${API_HOST:-0.0.0.0}
|
| - CLI_MODE=host
|
| - CLI_EXTRA_PATHS=/host-local/bin:/host-node/bin
|
| - CLI_CONFIG_HOME=/host-home
|
| - CLI_ALLOW_CONFIG_WRITES=true
|
|
|
|
|
|
|
|
|
| volumes:
|
| - ./data:/app/data
|
|
|
|
|
| - ~/.local/bin:/host-local/bin:ro
|
|
|
|
|
|
|
| - ~/.codex:/host-home/.codex:rw
|
| - ~/.claude:/host-home/.claude:rw
|
| - ~/.factory:/host-home/.factory:rw
|
| - ~/.openclaw:/host-home/.openclaw:rw
|
| - ~/.cursor:/host-home/.cursor:rw
|
| - ~/.config/cursor:/host-home/.config/cursor:rw
|
| profiles:
|
| - host
|
|
|
|
|
| cliproxyapi:
|
| container_name: cliproxyapi
|
| image: ghcr.io/router-for-me/cliproxyapi:v6.9.7
|
| restart: unless-stopped
|
| ports:
|
| - "${CLIPROXYAPI_PORT:-8317}:${CLIPROXYAPI_PORT:-8317}"
|
| volumes:
|
| - cliproxyapi-data:/root/.cli-proxy-api
|
| environment:
|
| - PORT=${CLIPROXYAPI_PORT:-8317}
|
| - HOST=0.0.0.0
|
| healthcheck:
|
| test:
|
| ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:${CLIPROXYAPI_PORT:-8317}/v1/models"]
|
| interval: 30s
|
| timeout: 5s
|
| retries: 3
|
| start_period: 10s
|
| profiles:
|
| - cliproxyapi
|
|
|
| volumes:
|
| cliproxyapi-data:
|
| name: cliproxyapi-data
|
| redis-data:
|
| name: omniroute-redis-data
|
|
|