autollama
Version:
Modern JavaScript-first RAG framework with contextual embeddings, professional CLI, and one-command deployment
144 lines (137 loc) • 3.44 kB
YAML
services:
postgres:
image: postgres:15-alpine
container_name: autollama-postgres
environment:
POSTGRES_USER: autollama
POSTGRES_PASSWORD: autollama
POSTGRES_DB: autollama
# Memory optimizations for small instances
POSTGRES_SHARED_BUFFERS: 64MB
POSTGRES_EFFECTIVE_CACHE_SIZE: 512MB
POSTGRES_WORK_MEM: 2MB
POSTGRES_MAINTENANCE_WORK_MEM: 32MB
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- autollama-network
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M
healthcheck:
test: ["CMD-SHELL", "pg_isready -U autollama"]
interval: 10s
retries: 5
restart: unless-stopped
qdrant:
image: qdrant/qdrant:latest
container_name: autollama-qdrant
environment:
# Memory optimizations for Qdrant
QDRANT__SERVICE__MAX_REQUEST_SIZE_MB: 32
QDRANT__STORAGE__PERFORMANCE__MAX_SEARCH_THREADS: 2
QDRANT__STORAGE__OPTIMIZERS__MEMMAP_THRESHOLD: 100000
ports:
- "6333:6333"
volumes:
- qdrant_data:/qdrant/storage
networks:
- autollama-network
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
restart: unless-stopped
autollama-bm25:
build: ./bm25-service
container_name: autollama-bm25
environment:
PORT: 3002
PYTHONPATH: /app
volumes:
- autollama-bm25-data:/app/data/bm25_indices
networks:
- autollama-network
ports:
- "3012:3002"
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M
restart: unless-stopped
autollama-api:
build: ./api
container_name: autollama-api
env_file:
- .env
environment:
NODE_ENV: production
PORT: 3001
DATABASE_URL: postgresql://autollama:autollama@postgres:5432/autollama
QDRANT_URL: http://autollama-qdrant:6333
# Auto-migration settings
AUTO_MIGRATE: "true"
MIGRATION_ON_START: "true"
DB_HOST: postgres
DB_PORT: 5432
DB_USER: autollama
DB_NAME: autollama
# Node.js memory optimizations
NODE_OPTIONS: "--max-old-space-size=512 --max-semi-space-size=64"
networks:
- autollama-network
ports:
- "3001:3001"
- "3003:3003"
depends_on:
postgres:
condition: service_healthy
qdrant:
condition: service_started
autollama-bm25:
condition: service_started
deploy:
resources:
limits:
memory: 1G
reservations:
memory: 512M
restart: unless-stopped
autollama-frontend:
build:
context: ./config/react-frontend
dockerfile: Dockerfile
container_name: autollama-frontend
environment:
NODE_ENV: production
networks:
- autollama-network
ports:
- "8080:80"
depends_on:
- autollama-api
deploy:
resources:
limits:
memory: 128M
reservations:
memory: 64M
restart: unless-stopped
volumes:
postgres_data:
qdrant_data:
autollama-bm25-data:
networks:
autollama-network:
driver: bridge
# All services communicate via service names (e.g., autollama-api:3001)
# DO NOT use localhost in nginx proxy configs - use service names instead