Files
ThothII/compose.yaml
T

203 lines
6.3 KiB
YAML

name: thothii
services:
core:
build:
context: .
dockerfile: docker/core.Dockerfile
image: thothii-core:local
environment:
HOST: 0.0.0.0
PORT: "8787"
THT_HARNESS_DIR: /app/harness
THT_BIN: /opt/venv/bin/tht
THT_DATA_ROOT: /data
SETTINGS_FILE: /data/settings/settings.json
THT_MAINTENANCE_FILE: /data/settings/maintenance.json
THT_WORKSPACE_REGISTRY_ROOT: /data/workspace-registry
THT_WORKSPACE_GIT_REMOTE: ${THT_WORKSPACE_GIT_REMOTE:?set THT_WORKSPACE_GIT_REMOTE}
THT_WORKSPACE_GIT_BRANCH: ${THT_WORKSPACE_GIT_BRANCH:-main}
THT_WORKSPACE_INSTALLATION_ID: ${THT_WORKSPACE_INSTALLATION_ID:-local}
THT_WORKSPACE_GIT_AUTHOR_NAME: ${THT_WORKSPACE_GIT_AUTHOR_NAME:-Thoth Workspace Registry}
THT_WORKSPACE_GIT_AUTHOR_EMAIL: ${THT_WORKSPACE_GIT_AUTHOR_EMAIL:-thoth-workspace-registry@localhost}
THT_WORKSPACE_SECRET_ROOTS: /run/secrets
THT_SECRETS_FILE: /run/secrets/thothii.secrets
THT_DB_NAME: ${THT_DB_NAME:-}
THT_DWH_REST_URL: ${THT_DWH_REST_URL:-}
THT_LLM_URL: ${THT_LLM_URL:-}
THT_INTERNAL_QDRANT_URL: http://qdrant:6333
THT_INTERNAL_EMBEDDING_URL: http://embedding:11434
THT_INTERNAL_EMBEDDING_MODEL: qwen3-embedding:0.6b
THT_INTERNAL_EMBEDDING_DIMENSIONS: "1024"
MAX_PI_PROCESSES: ${MAX_PI_PROCESSES:-4}
volumes:
- settings:/data/settings
- pi-state:/home/thoth/.pi
- ${PI_AUTH_FILE:?set PI_AUTH_FILE}:/home/thoth/.pi/agent/auth.json:ro
- ./deploy/pi/models.json:/home/thoth/.pi/agent/models.json:ro
- ./deploy/pi/settings.json:/home/thoth/.pi/agent/settings.json:ro
- workspace-registry:/data/workspace-registry
- sessions:/data/sessions
secrets:
- source: thothii_secrets
target: thothii.secrets
healthcheck:
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8787/health"]
interval: 15s
timeout: 3s
retries: 5
start_period: 30s
depends_on:
qdrant:
condition: service_healthy
embedding-model-init:
condition: service_completed_successfully
networks:
- thothii
workspace-maintenance:
image: thothii-core:local
profiles: [workspace-maintenance]
pull_policy: never
entrypoint: ["/usr/bin/tini", "--", "/app/docker/workspace-maintenance-entrypoint.sh"]
environment:
THT_HARNESS_DIR: /app/harness
THT_BIN: /opt/venv/bin/tht
THT_DATA_ROOT: /data
THT_WORKSPACE_REGISTRY_ROOT: /data/workspace-registry
THT_WORKSPACE_GIT_REMOTE: ${THT_WORKSPACE_GIT_REMOTE:?set THT_WORKSPACE_GIT_REMOTE}
THT_WORKSPACE_GIT_BRANCH: ${THT_WORKSPACE_GIT_BRANCH:-main}
THT_WORKSPACE_INSTALLATION_ID: ${THT_WORKSPACE_INSTALLATION_ID:-local}
THT_WORKSPACE_SECRET_ROOTS: /run/secrets
THT_SECRETS_FILE: /run/secrets/thothii.secrets
THT_DB_NAME: ${THT_DB_NAME:-}
THT_DWH_REST_URL: ${THT_DWH_REST_URL:-}
THT_LLM_URL: ${THT_LLM_URL:-}
THT_INTERNAL_QDRANT_URL: http://qdrant:6333
THT_INTERNAL_EMBEDDING_URL: http://embedding:11434
THT_INTERNAL_EMBEDDING_MODEL: qwen3-embedding:0.6b
THT_INTERNAL_EMBEDDING_DIMENSIONS: "1024"
HOME: /tmp/thoth
AWS_ACCESS_KEY_ID: ""
AWS_SECRET_ACCESS_KEY: ""
AWS_SESSION_TOKEN: ""
AWS_PROFILE: ""
AWS_DEFAULT_PROFILE: ""
AWS_CONFIG_FILE: /dev/null
AWS_SHARED_CREDENTIALS_FILE: /dev/null
volumes:
- type: volume
source: workspace-registry
target: /data/workspace-registry
read_only: true
- type: volume
source: sessions
target: /data/sessions
secrets:
- source: thothii_secrets
target: thothii.secrets
user: "10001:10001"
read_only: true
tmpfs:
- /tmp:rw,noexec,nosuid,nodev,size=64m,mode=1777
- /var/tmp:rw,noexec,nosuid,nodev,size=32m,mode=1777
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
restart: "no"
networks:
- thothii
frontend:
build:
context: .
dockerfile: docker/frontend.Dockerfile
args:
VITE_BASE: /
VITE_BACKEND_URL: /api
image: thothii-frontend:local
depends_on:
core:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:8080/ || exit 1"]
interval: 15s
timeout: 3s
retries: 5
start_period: 10s
networks:
- thothii
qdrant:
image: qdrant/qdrant:v1.18.2@sha256:75eab8c4ba42096724fdcfde8b4de0b5713d529dde32f285a1f86fdcb2c9e50c
expose:
- "6333"
volumes:
- qdrant-data:/qdrant/storage
healthcheck:
test:
- CMD-SHELL
- >
/usr/bin/bash -lc "exec 3<>/dev/tcp/127.0.0.1/6333 &&
printf 'GET /healthz HTTP/1.1\r\nHost: 127.0.0.1\r\nConnection: close\r\n\r\n' >&3 &&
grep -q '200 OK' <&3"
interval: 15s
timeout: 3s
retries: 10
start_period: 10s
networks:
- thothii
embedding:
image: ollama/ollama:0.32.0@sha256:57f573b47f1f71ebb445789f279fe3e596a8beab182f7cf486db9205bad87c5a
command: ["serve"]
expose:
- "11434"
volumes:
- embedding-models:/root/.ollama
healthcheck:
test:
- CMD-SHELL
- >
/usr/bin/bash -lc "exec 3<>/dev/tcp/127.0.0.1/11434 &&
printf 'GET /api/tags HTTP/1.1\r\nHost: 127.0.0.1\r\nConnection: close\r\n\r\n' >&3 &&
grep -q '200 OK' <&3"
interval: 15s
timeout: 5s
retries: 20
start_period: 10s
networks:
- thothii
embedding-model-init:
image: ollama/ollama:0.32.0@sha256:57f573b47f1f71ebb445789f279fe3e596a8beab182f7cf486db9205bad87c5a
entrypoint: ["/usr/bin/bash", "/opt/thoth/embedding-model-init.sh"]
environment:
OLLAMA_BASE_URL: http://embedding:11434
OLLAMA_MODEL: qwen3-embedding:0.6b
OLLAMA_WAIT_TIMEOUT_SEC: "180"
volumes:
- embedding-models:/root/.ollama
- ./docker/embedding-model-init.sh:/opt/thoth/embedding-model-init.sh:ro
depends_on:
embedding:
condition: service_healthy
networks:
- thothii
networks:
thothii:
volumes:
settings:
pi-state:
workspace-registry:
sessions:
qdrant-data:
embedding-models:
secrets:
thothii_secrets:
file: "${THT_SECRETS_FILE:?set THT_SECRETS_FILE}"