mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-04-28 06:19:46 +00:00
140 lines
4.9 KiB
YAML
140 lines
4.9 KiB
YAML
# ──────────────────────────────────────────────────────────────────────
|
|
# OmniRoute — Docker Compose
|
|
# ──────────────────────────────────────────────────────────────────────
|
|
#
|
|
# Profiles:
|
|
# base → minimal image, no CLI tools
|
|
# cli → CLIs installed inside the container (portable)
|
|
# host → runner-base + host-mounted CLI binaries (Linux-first)
|
|
# cliproxyapi → CLIProxyAPI sidecar on port 8317
|
|
#
|
|
# Usage:
|
|
# docker compose --profile base up -d
|
|
# docker compose --profile cli up -d
|
|
# docker compose --profile host up -d
|
|
# docker compose --profile cliproxyapi up -d
|
|
# docker compose --profile cli --profile cliproxyapi up -d
|
|
#
|
|
# Before first run, copy .env.example → .env and edit your secrets.
|
|
# ──────────────────────────────────────────────────────────────────────
|
|
|
|
x-common: &common
|
|
restart: unless-stopped
|
|
stop_grace_period: 40s
|
|
env_file: .env
|
|
environment:
|
|
- DATA_DIR=/app/data # Must match the volume mount below
|
|
- PORT=${PORT:-20128}
|
|
- DASHBOARD_PORT=${DASHBOARD_PORT:-${PORT:-20128}}
|
|
- API_PORT=${API_PORT:-20129}
|
|
- API_HOST=${API_HOST:-0.0.0.0}
|
|
volumes:
|
|
- ./data:/app/data
|
|
healthcheck:
|
|
test: ["CMD", "node", "healthcheck.mjs"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 15s
|
|
|
|
services:
|
|
# ── Profile: base (minimal, no CLI tools) ──────────────────────────
|
|
omniroute-base:
|
|
<<: *common
|
|
container_name: omniroute
|
|
build:
|
|
context: .
|
|
target: runner-base
|
|
image: omniroute:base
|
|
ports:
|
|
- "${DASHBOARD_PORT:-${PORT:-20128}}:${DASHBOARD_PORT:-${PORT:-20128}}"
|
|
- "${API_PORT:-20129}:${API_PORT:-20129}"
|
|
profiles:
|
|
- base
|
|
|
|
# ── Profile: cli (CLIs installed inside container) ─────────────────
|
|
omniroute-cli:
|
|
<<: *common
|
|
container_name: omniroute
|
|
build:
|
|
context: .
|
|
target: runner-cli
|
|
image: omniroute:cli
|
|
ports:
|
|
- "${DASHBOARD_PORT:-${PORT:-20128}}:${DASHBOARD_PORT:-${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
|
|
|
|
# ── Profile: host (host-mounted CLI binaries, Linux-first) ────────
|
|
omniroute-host:
|
|
<<: *common
|
|
container_name: omniroute
|
|
build:
|
|
context: .
|
|
target: runner-base
|
|
image: omniroute:base
|
|
ports:
|
|
- "${DASHBOARD_PORT:-${PORT:-20128}}:${DASHBOARD_PORT:-${PORT:-20128}}"
|
|
- "${API_PORT:-20129}:${API_PORT:-20129}"
|
|
environment:
|
|
- DATA_DIR=/app/data
|
|
- PORT=${PORT:-20128}
|
|
- DASHBOARD_PORT=${DASHBOARD_PORT:-${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
|
|
# Uncomment per-tool overrides as needed:
|
|
# - CLI_CURSOR_BIN=agent
|
|
# - CLI_CLINE_BIN=cline
|
|
# - CLI_CONTINUE_BIN=cn
|
|
volumes:
|
|
- ./data:/app/data
|
|
# ── Host binary mounts (read-only) ──
|
|
# Adjust paths below to match YOUR host system.
|
|
- ~/.local/bin:/host-local/bin:ro
|
|
# Node global binaries (adjust node version path)
|
|
# - ~/.nvm/versions/node/v24.14.1/bin:/host-node/bin:ro
|
|
# ── Host config mounts (read-write) ──
|
|
- ~/.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
|
|
|
|
# ── Profile: cliproxyapi (CLIProxyAPI as sidecar) ─────────────────
|
|
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
|