version: '3.8' services: # Redis - Message broker for Celery redis: image: redis:8-alpine container_name: mydocmanager-redis ports: - "6379:6379" networks: - mydocmanager-network # MongoDB - Final database for results mongodb: image: mongo:7 container_name: mydocmanager-mongodb ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password123 MONGO_INITDB_DATABASE: mydocmanager volumes: - mongodb-data:/data/db networks: - mydocmanager-network # File Processor - FastAPI + file monitoring + Celery task dispatch file-processor: build: context: ./src/file-processor dockerfile: Dockerfile container_name: mydocmanager-file-processor ports: - "8000:8000" environment: - REDIS_URL=redis://redis:6379/0 - MONGODB_URL=mongodb://admin:password123@mongodb:27017/mydocmanager?authSource=admin volumes: - ./src/file-processor/app:/app - ./volumes/watched_files:/watched_files depends_on: - redis - mongodb networks: - mydocmanager-network command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload # Worker - Celery workers for document processing worker: build: context: ./src/worker dockerfile: Dockerfile container_name: mydocmanager-worker environment: - REDIS_URL=redis://redis:6379/0 - MONGODB_URL=mongodb://admin:password123@mongodb:27017/mydocmanager?authSource=admin volumes: - ./src/worker/tasks:/app - ./volumes/watched_files:/watched_files depends_on: - redis - mongodb networks: - mydocmanager-network command: celery -A main worker --loglevel=info volumes: mongodb-data: networks: mydocmanager-network: driver: bridge