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: - ./volumes/db:/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 - PYTHONPATH=/app:/tasks # Added /tasks to Python path volumes: - ./src/file-processor:/app - ./src/worker/tasks:/app/tasks # <- Added: shared access to worker tasks - ./volumes/watched_files:/watched_files - ./volumes/objects:/objects depends_on: - redis - mongodb networks: - mydocmanager-network command: uvicorn app.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 - PYTHONPATH=/app volumes: - ./src/worker:/app - ./src/file-processor/app:/app/app # <- Added: shared access file-processor app - ./volumes/watched_files:/watched_files - ./volumes/objects:/objects depends_on: - redis - mongodb networks: - mydocmanager-network command: celery -A tasks.main worker --loglevel=info # Frontend - React application with Vite frontend: build: context: ./src/frontend dockerfile: Dockerfile container_name: mydocmanager-frontend ports: - "5173:5173" volumes: - ./src/frontend:/app - /app/node_modules # Anonymous volume to prevent node_modules override networks: - mydocmanager-network volumes: mongodb-data: networks: mydocmanager-network: driver: bridge