Oliver-ai-bot_2.0/docker-compose.yml
Vadym Samoilenko 44a512c41f Phase 1 Complete: Dual-bot architecture, knowledge base, access control
- Remove notebook mode, add RAG + Personal Assistant dual-bot setup
- Add knowledge base management (upload, URL scraping, document processing)
- Add user feature access control (allowed_features, features_override)
- Update admin dashboard with knowledge base tab
- Redesign login page, sidebar, and profile
- Add Celery tasks for async document processing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:26:40 +00:00

101 lines
2.6 KiB
YAML

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