Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 49 additions & 54 deletions docker-compose-bindmount-checkout.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
# YAML Anchors for common configurations
x-common-config: &common-config
env_file:
- .env
depends_on:
- qdrant

x-work-dir: &work-dir
working_dir: /work

x-huggingface-cache: &hf-cache
HF_HOME: /tmp/huggingface
HF_HUB_CACHE: /tmp/huggingface/hub
HUGGINGFACE_HUB_CACHE: /tmp/huggingface/hub
TRANSFORMERS_CACHE: /tmp/huggingface/transformers
FASTEMBED_CACHE_PATH: /tmp/huggingface/fastembed
HF_HUB_DISABLE_XET: 1

x-embedding-config: &embedding-config
EMBEDDING_MODEL: ${EMBEDDING_MODEL}
QWEN3_EMBEDDING_ENABLED: ${QWEN3_EMBEDDING_ENABLED:-0}
QWEN3_QUERY_INSTRUCTION: ${QWEN3_QUERY_INSTRUCTION:-1}
QWEN3_INSTRUCTION_TEXT: ${QWEN3_INSTRUCTION_TEXT}

x-standard-volumes: &standard-volumes
- ${HOST_INDEX_PATH:-.}:/work:ro
- ${HOST_INDEX_PATH:-.}/.codebase:/work/.codebase:rw

services:
qdrant:
image: qdrant/qdrant:latest
Expand Down Expand Up @@ -75,7 +103,6 @@ services:
volumes:
- ${HOST_INDEX_PATH:-.}:/work


mcp_http:
build:
context: .
Expand Down Expand Up @@ -160,7 +187,7 @@ services:
- "8080:8080"
volumes:
- ./models:/models:ro
entrypoint: ["/bin/sh","-lc"]
entrypoint: [ "/bin/sh", "-lc" ]
command:
- |
set -e
Expand All @@ -186,67 +213,35 @@ services:
exec /app/llama-server $$ARGS

indexer:
<<: [ *common-config, *work-dir ]
build:
context: .
dockerfile: Dockerfile.indexer
depends_on:
- qdrant
env_file:
- .env
environment:
- QDRANT_URL=${QDRANT_URL}
- COLLECTION_NAME=${COLLECTION_NAME:-codebase}
- HF_HOME=/tmp/huggingface
- HF_HUB_CACHE=/tmp/huggingface/hub
- HUGGINGFACE_HUB_CACHE=/tmp/huggingface/hub
- TRANSFORMERS_CACHE=/tmp/huggingface/transformers
- FASTEMBED_CACHE_PATH=/tmp/huggingface/fastembed
- HF_HUB_DISABLE_XET=1
- EMBEDDING_MODEL=${EMBEDDING_MODEL}
- QWEN3_EMBEDDING_ENABLED=${QWEN3_EMBEDDING_ENABLED:-0}
- QWEN3_QUERY_INSTRUCTION=${QWEN3_QUERY_INSTRUCTION:-1}
- QWEN3_INSTRUCTION_TEXT=${QWEN3_INSTRUCTION_TEXT}
working_dir: /work
volumes:
- ${HOST_INDEX_PATH:-.}:/work:ro
- ${HOST_INDEX_PATH:-.}/.codebase:/work/.codebase:rw

entrypoint: ["sh", "-c", "mkdir -p /tmp/huggingface/hub /tmp/huggingface/transformers /tmp/huggingface/fastembed && exec python /app/scripts/ingest_code.py"]
<<: [ *hf-cache, *embedding-config ]
QDRANT_URL: ${QDRANT_URL}
COLLECTION_NAME: ${COLLECTION_NAME:-codebase}
volumes: *standard-volumes
entrypoint: [ "sh", "-c", "mkdir -p /tmp/huggingface/hub /tmp/huggingface/transformers /tmp/huggingface/fastembed && exec python /app/scripts/ingest_code.py" ]

watcher:
<<: [ *common-config, *work-dir ]
build:
context: .
dockerfile: Dockerfile.indexer
depends_on:
- qdrant
env_file:
- .env
environment:
- QDRANT_URL=${QDRANT_URL}
- COLLECTION_NAME=${COLLECTION_NAME:-codebase}
- HF_HOME=/tmp/huggingface
- HF_HUB_CACHE=/tmp/huggingface/hub
- HUGGINGFACE_HUB_CACHE=/tmp/huggingface/hub
- TRANSFORMERS_CACHE=/tmp/huggingface/transformers
- FASTEMBED_CACHE_PATH=/tmp/huggingface/fastembed
- HF_HUB_DISABLE_XET=1
- EMBEDDING_MODEL=${EMBEDDING_MODEL}
- QWEN3_EMBEDDING_ENABLED=${QWEN3_EMBEDDING_ENABLED:-0}
- QWEN3_QUERY_INSTRUCTION=${QWEN3_QUERY_INSTRUCTION:-1}
- QWEN3_INSTRUCTION_TEXT=${QWEN3_INSTRUCTION_TEXT}
- WATCH_ROOT=/work
<<: [ *hf-cache, *embedding-config ]
QDRANT_URL: ${QDRANT_URL}
COLLECTION_NAME: ${COLLECTION_NAME:-codebase}
WATCH_ROOT: /work
# Watcher-specific backpressure & timeouts (safer defaults)
- QDRANT_TIMEOUT=60
- MAX_MICRO_CHUNKS_PER_FILE=${MAX_MICRO_CHUNKS_PER_FILE:-200}
- INDEX_UPSERT_BATCH=128
- INDEX_UPSERT_RETRIES=5
- WATCH_DEBOUNCE_SECS=${WATCH_DEBOUNCE_SECS:-1.5}
working_dir: /work
volumes:
- ${HOST_INDEX_PATH:-.}:/work:ro
- ${HOST_INDEX_PATH:-.}/.codebase:/work/.codebase:rw
entrypoint: ["sh", "-c", "mkdir -p /tmp/huggingface/hub /tmp/huggingface/transformers /tmp/huggingface/fastembed && exec python /app/scripts/watch_index.py"]

QDRANT_TIMEOUT: 60
MAX_MICRO_CHUNKS_PER_FILE: ${MAX_MICRO_CHUNKS_PER_FILE:-200}
INDEX_UPSERT_BATCH: 128
INDEX_UPSERT_RETRIES: 5
WATCH_DEBOUNCE_SECS: ${WATCH_DEBOUNCE_SECS:-1.5}
volumes: *standard-volumes
entrypoint: [ "sh", "-c", "mkdir -p /tmp/huggingface/hub /tmp/huggingface/transformers /tmp/huggingface/fastembed && exec python /app/scripts/watch_index.py" ]

upload_service:
build:
Expand Down Expand Up @@ -277,7 +272,7 @@ services:
- ${HOST_INDEX_PATH:-.}/.codebase:/work/.codebase:rw
user: "0:0"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8002/health"]
test: [ "CMD", "curl", "-f", "http://localhost:8002/health" ]
interval: 30s
timeout: 10s
retries: 3
Expand All @@ -300,7 +295,7 @@ services:
- ${HOST_INDEX_PATH:-.}:/work:ro
- ${HOST_INDEX_PATH:-.}/.codebase:/work/.codebase:rw

entrypoint: ["python", "/app/scripts/create_indexes.py"]
entrypoint: [ "python", "/app/scripts/create_indexes.py" ]

volumes:
qdrant_storage:
Expand Down
21 changes: 12 additions & 9 deletions docker-compose.openlit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,19 @@
# This adds OpenLit observability to your existing Context-Engine stack.
# Dashboard: http://localhost:3000 (login: user@openlit.io / openlituser)

# YAML Anchors for reusable configurations
x-clickhouse-health-condition: &clickhouse-health-condition
clickhouse:
condition: service_healthy

services:
# ClickHouse - storage backend for OpenLit
clickhouse:
image: clickhouse/clickhouse-server:24.4.1
container_name: openlit-clickhouse
ports:
- "9000:9000" # Native protocol (for OTEL exporter)
- "8123:8123" # HTTP interface (for dashboard queries)
- "9000:9000" # Native protocol (for OTEL exporter)
- "8123:8123" # HTTP interface (for dashboard queries)
volumes:
- clickhouse_data:/var/lib/clickhouse
- ./config/clickhouse-config.xml:/etc/clickhouse-server/config.d/custom-config.xml:ro
Expand All @@ -20,7 +25,7 @@ services:
- CLICKHOUSE_PASSWORD=OPENLIT
- CLICKHOUSE_USER=default
healthcheck:
test: ["CMD", "clickhouse-client", "--query", "SELECT 1"]
test: [ "CMD", "clickhouse-client", "--query", "SELECT 1" ]
interval: 10s
timeout: 5s
retries: 5
Expand All @@ -32,9 +37,9 @@ services:
image: ghcr.io/openlit/openlit:latest
container_name: openlit-dashboard
ports:
- "3000:3000" # Dashboard UI
- "4317:4317" # OTLP gRPC receiver
- "4318:4318" # OTLP HTTP receiver
- "3000:3000" # Dashboard UI
- "4317:4317" # OTLP gRPC receiver
- "4318:4318" # OTLP HTTP receiver
environment:
- INIT_DB_HOST=clickhouse
- INIT_DB_PORT=8123
Expand All @@ -45,9 +50,7 @@ services:
volumes:
- openlit_data:/app/client/data
- ./config/otel-collector-config.yaml:/etc/otel/otel-collector-config.yaml:ro
depends_on:
clickhouse:
condition: service_healthy
depends_on: *clickhouse-health-condition
networks:
- dev-remote-network

Expand Down
Loading