version: '3.8' # Library - Front Desk API (Coordination Service) # Application Layer # Port: 8089 (HTTP) # GPU: No # Source: git.schweitz.internal/jpmschweitzer/library-desk (internal registry) services: library-desk: image: git.schweitz.internal/jpmschweitzer/library-desk:latest container_name: library-desk restart: unless-stopped ports: - "8089:8089" # FastAPI HTTP environment: # API Configuration - LIBRARY_API_KEY=${LIBRARY_API_KEY} # Neo4j Configuration - NEO4J_URI=bolt://neo4j:7687 - NEO4J_USER=neo4j - NEO4J_PASSWORD=${NEO4J_PASSWORD} # Qdrant Configuration - QDRANT_HOST=qdrant - QDRANT_PORT=6333 # Wiki.js Configuration - WIKIJS_URL=http://wiki:3000 - WIKIJS_USERNAME=librarian@schweitz.net - WIKIJS_PASSWORD=${WIKIJS_PASSWORD} - WIKIJS_DB_PASSWORD=${WIKIJS_DB_PASSWORD} # SearXNG Configuration - SEARXNG_URL=http://searxng:8080 # Paperless Configuration - PAPERLESS_URL=http://paperless:8000 - PAPERLESS_TOKEN=${PAPERLESS_TOKEN} # Ollama Configuration (for embeddings) - OLLAMA_URL=http://ollama:11434 - OLLAMA_MODEL=nomic-embed-text # Redis Configuration - REDIS_HOST=redis-shared - REDIS_PORT=6379 - REDIS_DB=4 # Central Settings Database - SYSTEM_SETTINGS_HOST=postgres-shared - SYSTEM_SETTINGS_PORT=5432 - SYSTEM_SETTINGS_DB=system_settings - SYSTEM_SETTINGS_USER=settings - SYSTEM_SETTINGS_PASSWORD=${SYSTEM_SETTINGS_PASSWORD} # Scheduler Service - SCHEDULER_URL=http://scheduler:8090 # Python Configuration - PYTHONUNBUFFERED=1 - TZ=${TZ:-Europe/Amsterdam} labels: - "com.centurylinklabs.watchtower.enable=true" networks: - docker-dataplane deploy: resources: reservations: memory: 256M limits: memory: 768M healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8089/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s networks: docker-dataplane: external: true name: docker-dataplane