version: '3.9' services: db: image: postgres:16-alpine container_name: nexus-postgres environment: POSTGRES_DB: ${POSTGRES_DB:-nexus_db} POSTGRES_USER: ${POSTGRES_USER:-nexus_user} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-nexus_user} -d ${POSTGRES_DB:-nexus_db}"] interval: 10s timeout: 5s retries: 5 networks: - nexus-network redis: image: redis:7-alpine container_name: nexus-redis ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - nexus-network qdrant: image: qdrant/qdrant:latest container_name: nexus-qdrant ports: - "6333:6333" - "6334:6334" volumes: - qdrant_data:/qdrant/storage environment: - QDRANT__SERVICE__GRPC_PORT=6334 networks: - nexus-network backend: build: context: ./backend dockerfile: Dockerfile container_name: nexus-backend environment: ENVIRONMENT: development DATABASE_URL: postgresql://${POSTGRES_USER:-nexus_user}:${POSTGRES_PASSWORD:-changeme}@db:5432/${POSTGRES_DB:-nexus_db} REDIS_URL: redis://redis:6379/0 QDRANT_URL: http://qdrant:6333 ENTRA_CLIENT_ID: ${ENTRA_CLIENT_ID} ENTRA_CLIENT_SECRET: ${ENTRA_CLIENT_SECRET} ENTRA_TENANT_ID: ${ENTRA_TENANT_ID} ENTRA_REDIRECT_URI: ${ENTRA_REDIRECT_URI:-http://localhost:8000/api/v1/auth/callback} OPENAI_API_KEY: ${OPENAI_API_KEY} GOOGLE_API_KEY: ${GOOGLE_API_KEY} ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} JWT_SECRET: ${JWT_SECRET} JWT_ALGORITHM: ${JWT_ALGORITHM:-HS256} JWT_EXPIRATION_MINUTES: ${JWT_EXPIRATION_MINUTES:-15} REFRESH_TOKEN_EXPIRATION_DAYS: ${REFRESH_TOKEN_EXPIRATION_DAYS:-7} LLAMAPARSE_API_KEY: ${LLAMAPARSE_API_KEY:-} MAX_UPLOAD_SIZE_MB: ${MAX_UPLOAD_SIZE_MB:-100} ports: - "8000:8000" depends_on: db: condition: service_healthy redis: condition: service_healthy qdrant: condition: service_started volumes: - ./backend:/app - uploads_data:/app/uploads networks: - nexus-network volumes: postgres_data: driver: local redis_data: driver: local qdrant_data: driver: local uploads_data: driver: local networks: nexus-network: driver: bridge