Files
MyDocManager/docker-compose.yml

90 lines
2.5 KiB
YAML

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
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