services: # MongoDB Database mongodb: image: docker.io/library/mongo:7-jammy container_name: datacenter-docs-mongodb-dev hostname: mongodb ports: - "${MONGODB_PORT}:27017" env_file: - ../../.env environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGODB_DATABASE} 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: docker.io/library/redis:7-alpine container_name: datacenter-docs-redis-dev hostname: redis ports: - "${REDIS_PORT}:6379" env_file: - ../../.env 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 hostname: api ports: - "${API_PORT}:8000" env_file: - ../../.env 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 hostname: chat ports: - "${CHAT_PORT}:8001" env_file: - ../../.env volumes: - ../../src:/app/src:z - ../../config:/app/config:z - ../../output:/app/output:z # Documentation files - ../../scripts:/app/scripts:z # Indexing scripts - chat-logs:/app/logs - chat-data:/app/data # Vector store persistence 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 hostname: worker env_file: - ../../.env 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: docker.io/mher/flower:2.0 container_name: datacenter-docs-flower-dev hostname: flower ports: - "${FLOWER_PORT}:5555" env_file: - ../../.env depends_on: redis: condition: service_healthy worker: condition: service_healthy networks: - datacenter-network restart: unless-stopped # Frontend frontend: build: context: ../.. dockerfile: deploy/docker/Dockerfile.frontend container_name: datacenter-docs-frontend-dev hostname: frontend ports: - "${FRONTEND_PORT}:80" env_file: - ../../.env 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 chat-data: name: datacenter-docs-chat-data-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