version: "3.3" services: mongo: image: mongo:7 container_name: subwatcher-mongo restart: unless-stopped volumes: - mongo_data:/data/db redis: image: redis:7-alpine container_name: subwatcher-redis restart: unless-stopped volumes: - redis_data:/data api: build: context: ./services/api container_name: subwatcher-api restart: unless-stopped env_file: - .env environment: - NODE_ENV=production - API_PORT=3002 - TEMP_ROOT=/temp - CLAMAV_DB_DIR=/var/lib/clamav ports: - "3002:3002" volumes: - temp_data:/temp - clamav_data:/var/lib/clamav depends_on: - mongo - redis core: build: context: ./services/core container_name: subwatcher-core restart: unless-stopped env_file: - .env environment: - NODE_ENV=production - CORE_PORT=3001 - MONGO_URI=mongodb://mongo:27017/subwatcher - REDIS_HOST=redis - REDIS_PORT=6379 - API_BASE_URL=http://api:3002 - TEMP_ROOT=/temp - MEDIA_TV_PATH=/media/tv - MEDIA_MOVIE_PATH=/media/movie ports: - "3001:3001" volumes: - temp_data:/temp:ro - ./_media/tv:/media/tv - ./_media/movie:/media/movie depends_on: - mongo - redis - api ui: build: context: ./services/ui container_name: subwatcher-ui restart: unless-stopped environment: - NODE_ENV=production - PORT=3000 - CORE_PROXY_URL=http://core:3001 ports: - "3000:3000" depends_on: - core volumes: mongo_data: redis_data: temp_data: clamav_data: