81 lines
2.3 KiB
YAML
81 lines
2.3 KiB
YAML
# Memory OS — Docker Compose
|
|
#
|
|
# Starts Qdrant (vector DB), Redis (job queue), and ARQ Worker (embedding pipeline).
|
|
# Copy .env.example to .env and fill in required values before running.
|
|
|
|
services:
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
command: >
|
|
sh -c '
|
|
mkdir -p /usr/local/etc/redis &&
|
|
echo "requirepass $${REDIS_PASSWORD}" > /usr/local/etc/redis/redis.conf &&
|
|
echo "bind 0.0.0.0" >> /usr/local/etc/redis/redis.conf &&
|
|
echo "appendonly yes" >> /usr/local/etc/redis/redis.conf &&
|
|
echo "maxmemory 512mb" >> /usr/local/etc/redis/redis.conf &&
|
|
echo "maxmemory-policy allkeys-lru" >> /usr/local/etc/redis/redis.conf &&
|
|
redis-server /usr/local/etc/redis/redis.conf
|
|
'
|
|
environment:
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
|
ports:
|
|
- "127.0.0.1:6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 5
|
|
|
|
qdrant:
|
|
image: qdrant/qdrant:v1.17.1
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:6333:6333"
|
|
volumes:
|
|
- qdrant_data:/qdrant/storage
|
|
environment:
|
|
QDRANT__SERVICE__HTTP_PORT: "6333"
|
|
QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY:-}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:6333/healthz"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 10s
|
|
|
|
worker:
|
|
build:
|
|
context: ./worker
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
qdrant:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
environment:
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: "6379"
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
|
QDRANT_HOST: qdrant
|
|
QDRANT_PORT: "6333"
|
|
QDRANT_API_KEY: ${QDRANT_API_KEY}
|
|
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY}
|
|
EMBEDDING_DIMS: "${EMBEDDING_DIMS:-4096}"
|
|
COLLECTION_NAME: "${COLLECTION_NAME:-knowledge_base}"
|
|
ARQ_JOB_TIMEOUT: "300"
|
|
ARQ_MAX_JOBS: "10"
|
|
ARQ_KEEP_RESULT: "3600"
|
|
LOG_LEVEL: ${LOG_LEVEL:-INFO}
|
|
volumes:
|
|
- ${WIKI_PATH:-./wiki}:/wiki:ro
|
|
- ${HERMES_HOME:-./hermes}:/hermes:rw
|
|
- ${FABRIC_DIR:-./fabric}:/fabric:rw
|
|
|
|
volumes:
|
|
redis_data:
|
|
qdrant_data:
|