dgx-spark-playbooks/nvidia/txt2kg/assets/deploy/compose/docker-compose.yml

194 lines
5.1 KiB
YAML
Raw Normal View History

2026-01-14 16:05:35 +00:00
# txt2kg Docker Compose - ArangoDB + Ollama (Default)
#
# Default stack tested and working on DGX Spark
#
# Usage:
# ./start.sh # Default: ArangoDB + Ollama
# ./start.sh --vector-search # Add Qdrant + Sentence Transformers
#
# For Neo4j + vLLM, use: ./start.sh --vllm
2025-12-02 19:43:52 +00:00
2025-10-06 17:05:41 +00:00
services:
app:
build:
context: ../..
dockerfile: deploy/app/Dockerfile
ports:
- '3001:3000'
environment:
2026-01-14 16:05:35 +00:00
# ArangoDB configuration
2025-10-06 17:05:41 +00:00
- ARANGODB_URL=http://arangodb:8529
- ARANGODB_DB=txt2kg
2026-01-14 16:05:35 +00:00
- GRAPH_DB_TYPE=arangodb
# Disable Neo4j
- NEO4J_URI=bolt://localhost:7687
- NEO4J_USER=neo4j
- NEO4J_PASSWORD=password123
# Ollama configuration
- OLLAMA_BASE_URL=http://ollama:11434/v1
- OLLAMA_MODEL=llama3.1:8b
2026-04-07 04:13:30 +00:00
# vLLM disabled in default Ollama mode
# - VLLM_BASE_URL=http://localhost:8001/v1
2026-01-14 16:05:35 +00:00
- VLLM_MODEL=disabled
# Vector DB configuration
2025-12-02 19:43:52 +00:00
- QDRANT_URL=http://qdrant:6333
- VECTOR_DB_TYPE=qdrant
2026-01-14 16:05:35 +00:00
# Embeddings configuration
2025-10-06 17:05:41 +00:00
- LANGCHAIN_TRACING_V2=true
2025-12-02 19:43:52 +00:00
- SENTENCE_TRANSFORMER_URL=http://sentence-transformers:80
- MODEL_NAME=all-MiniLM-L6-v2
- EMBEDDINGS_API_URL=http://sentence-transformers:80
2026-01-14 16:05:35 +00:00
# Other settings
2025-10-06 17:05:41 +00:00
- GRPC_SSL_CIPHER_SUITES=HIGH+ECDSA:HIGH+aRSA
- NODE_TLS_REJECT_UNAUTHORIZED=0
2025-12-02 19:43:52 +00:00
- NVIDIA_API_KEY=${NVIDIA_API_KEY:-}
2025-10-06 17:05:41 +00:00
- NODE_OPTIONS=--max-http-header-size=80000
- UV_THREADPOOL_SIZE=128
- HTTP_TIMEOUT=1800000
- REQUEST_TIMEOUT=1800000
networks:
- default
- txt2kg-network
2026-01-14 16:05:35 +00:00
- qdrant-net
2025-10-10 18:45:20 +00:00
depends_on:
2026-01-14 16:05:35 +00:00
arangodb:
condition: service_started
ollama:
condition: service_started
# ArangoDB - Graph database
2025-10-06 17:05:41 +00:00
arangodb:
image: arangodb:latest
ports:
- '8529:8529'
environment:
- ARANGO_NO_AUTH=1
volumes:
- arangodb_data:/var/lib/arangodb3
- arangodb_apps_data:/var/lib/arangodb3-apps
2026-01-14 16:05:35 +00:00
networks:
- default
restart: unless-stopped
# ArangoDB initialization - create database
2025-10-06 17:05:41 +00:00
arangodb-init:
image: arangodb:latest
depends_on:
arangodb:
condition: service_started
restart: on-failure
entrypoint: >
sh -c "
echo 'Waiting for ArangoDB to start...' &&
sleep 10 &&
echo 'Creating txt2kg database...' &&
arangosh --server.endpoint tcp://arangodb:8529 --server.authentication false --javascript.execute-string 'try { db._createDatabase(\"txt2kg\"); console.log(\"Database txt2kg created successfully!\"); } catch(e) { if(e.message.includes(\"duplicate\")) { console.log(\"Database txt2kg already exists\"); } else { throw e; } }'
"
2026-01-14 16:05:35 +00:00
networks:
- default
# Ollama - Local LLM inference
2025-10-06 17:05:41 +00:00
ollama:
build:
context: ../services/ollama
dockerfile: Dockerfile
image: ollama-custom:latest
container_name: ollama-compose
ports:
- '11434:11434'
volumes:
- ollama_data:/root/.ollama
environment:
2026-01-14 16:05:35 +00:00
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
- CUDA_VISIBLE_DEVICES=0
- OLLAMA_FLASH_ATTENTION=1
- OLLAMA_KEEP_ALIVE=30m
- OLLAMA_NUM_PARALLEL=4
- OLLAMA_MAX_LOADED_MODELS=1
- OLLAMA_KV_CACHE_TYPE=q8_0
- OLLAMA_GPU_LAYERS=-1
- OLLAMA_LLM_LIBRARY=cuda_v13
2025-10-06 17:05:41 +00:00
networks:
- default
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
healthcheck:
2025-12-02 19:43:52 +00:00
test: ["CMD", "ollama", "list"]
2025-10-06 17:05:41 +00:00
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
2026-01-14 16:05:35 +00:00
# Optional: Vector search services
2025-12-02 19:43:52 +00:00
sentence-transformers:
build:
context: ../services/sentence-transformers
dockerfile: Dockerfile
ports:
- '8000:80'
environment:
- MODEL_NAME=all-MiniLM-L6-v2
networks:
- default
restart: unless-stopped
profiles:
2026-01-14 16:05:35 +00:00
- vector-search
2025-12-02 19:43:52 +00:00
qdrant:
image: qdrant/qdrant:latest
container_name: qdrant
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant_data:/qdrant/storage
networks:
2026-01-14 16:05:35 +00:00
- qdrant-net
2025-12-02 19:43:52 +00:00
restart: unless-stopped
profiles:
2026-01-14 16:05:35 +00:00
- vector-search
2025-12-02 19:43:52 +00:00
qdrant-init:
image: curlimages/curl:latest
depends_on:
- qdrant
restart: "no"
entrypoint: /bin/sh
command:
- -c
- |
echo 'Waiting for Qdrant to start...'
sleep 5
2026-01-14 16:05:35 +00:00
curl -X PUT http://qdrant:6333/collections/entity-embeddings \
-H 'Content-Type: application/json' \
-d '{"vectors":{"size":384,"distance":"Cosine"}}' || true
curl -X PUT http://qdrant:6333/collections/document-embeddings \
-H 'Content-Type: application/json' \
-d '{"vectors":{"size":384,"distance":"Cosine"}}' || true
echo 'Collections created'
2025-12-02 19:43:52 +00:00
networks:
2026-01-14 16:05:35 +00:00
- qdrant-net
2025-12-02 19:43:52 +00:00
profiles:
- vector-search
2025-10-06 17:05:41 +00:00
volumes:
arangodb_data:
arangodb_apps_data:
ollama_data:
2025-12-02 19:43:52 +00:00
qdrant_data:
2025-10-06 17:05:41 +00:00
networks:
default:
driver: bridge
txt2kg-network:
2025-10-10 18:45:20 +00:00
driver: bridge
2026-01-14 16:05:35 +00:00
qdrant-net:
name: qdrant-network