version: '3.8' services: mongo: image: mongo:7 container_name: nexus-mongo restart: always ports: - "27017:27017" volumes: - mongo-data:/data/db redis: image: redis:alpine container_name: nexus-redis restart: always ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 auth-service: build: context: ./backend dockerfile: services/auth/Dockerfile container_name: nexus-auth-service restart: always ports: - "8001:8001" environment: - PORT=8001 - REDIS_URL=${REDIS_URL:-redis://redis:6379} - MONGODB_URL=${MONGODB_URL:-mongodb://mongo:27017/auth} - INTERNAL_API_KEY=${INTERNAL_API_KEY} depends_on: redis: condition: service_healthy chat-service: build: context: ./backend dockerfile: services/chat/Dockerfile container_name: nexus-chat-service restart: always ports: - "8002:8002" environment: - PORT=8002 - MONGODB_URL=${MONGODB_URL:-mongodb://mongo:27017/chat} agent-service: build: context: ./backend dockerfile: services/agent/Dockerfile container_name: nexus-agent-service restart: always ports: - "8003:8003" environment: - PORT=8003 - MONGODB_URL=${MONGODB_URL:-mongodb://mongo:27017/agent} - REDIS_URL=${REDIS_URL:-redis://redis:6379} - CHAT_SERVICE=${CHAT_SERVICE:-http://chat-service:8002} - AUTH_SERVICE=${AUTH_SERVICE:-http://auth-service:8001} - GATEWAY_URL=${GATEWAY_URL:-http://gateway:8000} - INTERNAL_API_KEY=${INTERNAL_API_KEY} - GOOGLE_API_KEY=${GOOGLE_API_KEY} - GROQ_API_KEY=${GROQ_API_KEY} - TAVILY_API_KEY=${TAVILY_API_KEY} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - QDRANT_URL=${QDRANT_URL} - QDRANT_API_KEY=${QDRANT_API_KEY} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - AWS_REGION=${AWS_REGION} - AWS_BUCKET_NAME=${AWS_BUCKET_NAME} depends_on: redis: condition: service_healthy billing-service: build: context: ./backend dockerfile: services/billing/Dockerfile container_name: nexus-billing-service restart: always ports: - "8004:8004" environment: - PORT=8004 - MONGODB_URL=${MONGODB_URL:-mongodb://mongo:27017/billing} - AUTH_SERVICE=${AUTH_SERVICE:-http://auth-service:8001} - INTERNAL_API_KEY=${INTERNAL_API_KEY} - RAZORPAY_KEY_ID=${RAZORPAY_KEY_ID} - RAZORPAY_KEY_SECRET=${RAZORPAY_KEY_SECRET} gateway: build: context: ./backend dockerfile: gateway/Dockerfile container_name: nexus-gateway restart: always ports: - "8000:8000" environment: - PORT=8000 - REDIS_URL=${REDIS_URL:-redis://redis:6379} - AUTH_SERVICE=${AUTH_SERVICE:-http://auth-service:8001} - CHAT_SERVICE=${CHAT_SERVICE:-http://chat-service:8002} - AGENT_SERVICE=${AGENT_SERVICE:-http://agent-service:8003} - BILLING_SERVICE=${BILLING_SERVICE:-http://billing-service:8004} depends_on: redis: condition: service_healthy auth-service: condition: service_started chat-service: condition: service_started agent-service: condition: service_started billing-service: condition: service_started frontend: build: context: ./frontend dockerfile: Dockerfile args: - VITE_FIREBASE_API_KEY=${VITE_FIREBASE_API_KEY} - VITE_SERVER_URL=${VITE_SERVER_URL:-http://localhost:8000} - VITE_RAZORPAY_KEY=${VITE_RAZORPAY_KEY} container_name: nexus-frontend restart: always ports: - "80:80" depends_on: - gateway volumes: mongo-data: