# Docker Compose configuration for Abstracts Explorer # Compatible with Docker Compose v2+ and Podman Compose services: # Main Abstracts Explorer application abstracts-explorer: image: ghcr.io/thawn/abstracts-explorer:latest container_name: abstracts-explorer ports: - "5000:5000" volumes: # Persist data directory - abstracts-data:/app/data environment: # Data dir must be the same as assigned to the volume, otherwise downloaded data will not persist - DATA_DIR=/app/data # Database configuration - using PostgreSQL - PAPER_DB=postgresql://abstracts:abstracts_password@postgres:5432/abstracts # Embeddings configuration - using ChromaDB service - EMBEDDING_DB=http://chromadb:8000 - COLLECTION_NAME=papers # LLM Backend configuration # The auth token for the LLM backend is read from the environment variable LLM_BACKEND_AUTH_TOKEN, # which must be set in the environment or .env file. # Option 1: Use external service (e.g., blablador) - LLM_BACKEND_URL=https://api.helmholtz-blablador.fz-juelich.de - LLM_BACKEND_AUTH_TOKEN=${LLM_BACKEND_AUTH_TOKEN} # Option 2: Use host's LM Studio (requires host.docker.internal or host network) # - LLM_BACKEND_URL=http://host.docker.internal:1234 # Models # For Blablador - CHAT_MODEL=alias-fast - EMBEDDING_MODEL=alias-qwen3-8b-embeddings # For host's LM Studio we recommend # - CHAT_MODEL=gemma-3-4b-it-qat # - EMBEDDING_MODEL=text-embedding-qwen3-embedding-4b # RAG settings - MAX_CONTEXT_PAPERS=5 - ENABLE_QUERY_REWRITING=true - QUERY_SIMILARITY_THRESHOLD=0.7 # Logging configuration # Set log level: DEBUG, INFO, WARNING (default), ERROR, CRITICAL - LOG_LEVEL=WARNING # Use host network mode for easier access to host's LM Studio # Uncomment if using LM Studio on host # network_mode: host # Depends on database services depends_on: chromadb: condition: service_healthy postgres: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s # ChromaDB vector database service chromadb: image: chromadb/chroma:latest container_name: abstracts-chromadb volumes: - chromadb-data:/data environment: - IS_PERSISTENT=TRUE - ANONYMIZED_TELEMETRY=FALSE restart: unless-stopped healthcheck: test: ["CMD-SHELL", "timeout 1 bash -c '