version: '3.8' services: postgres: image: postgres:16-alpine container_name: ntu_academic_postgres environment: POSTGRES_DB: academic_assistant POSTGRES_USER: postgres POSTGRES_PASSWORD: postgrespassword ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data backend: build: context: ./backend dockerfile: ../docker/backend.Dockerfile container_name: ntu_academic_backend ports: - "8000:8000" environment: - DATABASE_URL=postgresql+asyncpg://postgres:postgrespassword@postgres:5432/academic_assistant - GOOGLE_API_KEY=${GOOGLE_API_KEY} - LLM_PROVIDER=gemini - EMBEDDING_PROVIDER=local - CHROMA_PERSIST_DIR=./chroma_data depends_on: - postgres volumes: - chroma_data:/app/chroma_data - ./data:/app/data frontend: build: context: ./frontend dockerfile: ../docker/frontend.Dockerfile container_name: ntu_academic_frontend ports: - "3000:80" depends_on: - backend volumes: postgres_data: chroma_data: