version: '3' services: mongodb: image: mongo:6.0 container_name: crawler-mongodb ports: - "27017:27017" volumes: - mongodb_data:/data/db restart: unless-stopped environment: - MONGO_INITDB_DATABASE=webcrawler networks: - crawler-network redis: image: redis:latest container_name: crawler-redis ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped networks: - crawler-network web-crawler: build: context: . dockerfile: Dockerfile container_name: web-crawler volumes: - ./:/app - crawler_data:/data/storage ports: - "9100:9100" depends_on: - mongodb - redis environment: - MONGODB_URI=mongodb://mongodb:27017/ - REDIS_URI=redis://redis:6379/0 - LOG_LEVEL=INFO - MAX_WORKERS=4 networks: - crawler-network command: python crawl.py start --workers=4 crawler-api: build: context: . dockerfile: Dockerfile container_name: crawler-api volumes: - ./:/app - crawler_data:/data/storage ports: - "8000:8000" depends_on: - mongodb - redis - web-crawler environment: - MONGODB_URI=mongodb://mongodb:27017/ - REDIS_URI=redis://redis:6379/0 - LOG_LEVEL=INFO networks: - crawler-network command: python api.py networks: crawler-network: driver: bridge volumes: mongodb_data: redis_data: crawler_data: