version: '3.8' services: # MongoDB Database mongodb: image: mongo:7-jammy container_name: datacenter-docs-mongodb-dev ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: admin123 MONGO_INITDB_DATABASE: datacenter_docs volumes: - mongodb-data:/data/db - mongodb-config:/data/configdb networks: - datacenter-network healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 5s retries: 5 # Redis Cache & Message Broker redis: image: redis:7-alpine container_name: datacenter-docs-redis-dev ports: - "6379:6379" command: redis-server --appendonly yes volumes: - redis-data:/data networks: - datacenter-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 # FastAPI API Service api: build: context: ../.. dockerfile: deploy/docker/Dockerfile.api container_name: datacenter-docs-api-dev ports: - "8000:8000" environment: - MONGODB_URL=mongodb://admin:admin123@mongodb:27017 - MONGODB_DATABASE=datacenter_docs - REDIS_URL=redis://redis:6379 - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - MCP_SERVER_URL=${MCP_SERVER_URL:-http://localhost:8001} - LOG_LEVEL=DEBUG volumes: - ../../src:/app/src - ../../config:/app/config - api-logs:/app/logs - api-output:/app/output depends_on: mongodb: condition: service_healthy redis: condition: service_healthy networks: - datacenter-network restart: unless-stopped # Chat Service chat: build: context: ../.. dockerfile: deploy/docker/Dockerfile.chat container_name: datacenter-docs-chat-dev ports: - "8001:8001" environment: - MONGODB_URL=mongodb://admin:admin123@mongodb:27017 - MONGODB_DATABASE=datacenter_docs - REDIS_URL=redis://redis:6379 - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - LOG_LEVEL=DEBUG volumes: - ../../src:/app/src - ../../config:/app/config - chat-logs:/app/logs depends_on: mongodb: condition: service_healthy redis: condition: service_healthy networks: - datacenter-network restart: unless-stopped # Celery Worker worker: build: context: ../.. dockerfile: deploy/docker/Dockerfile.worker container_name: datacenter-docs-worker-dev environment: - MONGODB_URL=mongodb://admin:admin123@mongodb:27017 - MONGODB_DATABASE=datacenter_docs - REDIS_URL=redis://redis:6379 - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - LOG_LEVEL=DEBUG volumes: - ../../src:/app/src - ../../config:/app/config - worker-logs:/app/logs - worker-output:/app/output depends_on: mongodb: condition: service_healthy redis: condition: service_healthy networks: - datacenter-network restart: unless-stopped # Flower - Celery Monitoring flower: image: mher/flower:2.0 container_name: datacenter-docs-flower-dev ports: - "5555:5555" environment: - CELERY_BROKER_URL=redis://redis:6379 - CELERY_RESULT_BACKEND=redis://redis:6379 - FLOWER_PORT=5555 depends_on: - redis - worker networks: - datacenter-network restart: unless-stopped # Frontend frontend: build: context: ../.. dockerfile: deploy/docker/Dockerfile.frontend container_name: datacenter-docs-frontend-dev ports: - "80:80" depends_on: - api - chat networks: - datacenter-network restart: unless-stopped volumes: mongodb-data: name: datacenter-docs-mongodb-data-dev mongodb-config: name: datacenter-docs-mongodb-config-dev redis-data: name: datacenter-docs-redis-data-dev api-logs: name: datacenter-docs-api-logs-dev api-output: name: datacenter-docs-api-output-dev chat-logs: name: datacenter-docs-chat-logs-dev worker-logs: name: datacenter-docs-worker-logs-dev worker-output: name: datacenter-docs-worker-output-dev networks: datacenter-network: name: datacenter-docs-network-dev driver: bridge