Files

77 lines
1.9 KiB
YAML

name: fastmedia-downloader
services:
frontend:
build:
context: ./services/frontend
args:
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:8000}
ports:
- "${FRONTEND_PORT:-3000}:3000"
environment:
NODE_ENV: production
depends_on:
api-gateway:
condition: service_healthy
mem_limit: 256m
cpus: 0.5
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
restart: unless-stopped
networks:
- fastmedia-net
api-gateway:
build: ./services/api-gateway
ports:
- "${API_GATEWAY_PORT:-8000}:8000"
environment:
MEDIA_PROCESSOR_URL: http://media-processor:8001
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-http://localhost:3000}
RATE_LIMIT_PER_MINUTE: ${RATE_LIMIT_PER_MINUTE:-60}
DOWNLOADS_PER_MINUTE: ${DOWNLOADS_PER_MINUTE:-10}
MAX_BODY_BYTES: ${MAX_BODY_BYTES:-65536}
ALLOW_PRIVATE_URLS: ${ALLOW_PRIVATE_URLS:-0}
YTDLP_ALLOW_INSECURE_TLS: ${YTDLP_ALLOW_INSECURE_TLS:-0}
depends_on:
media-processor:
condition: service_healthy
mem_limit: 512m
cpus: 1.0
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
restart: unless-stopped
networks:
- fastmedia-net
media-processor:
build: ./services/media-processor
expose:
- "8001"
environment:
TEMP_STORAGE_DIR: /app/temp_storage
FILE_TTL_MINUTES: ${FILE_TTL_MINUTES:-30}
MAX_CONCURRENT_JOBS: ${MAX_CONCURRENT_JOBS:-3}
MAX_JOB_MINUTES: ${MAX_JOB_MINUTES:-20}
MAX_FILESIZE_MB: ${MAX_FILESIZE_MB:-2048}
YTDLP_ALLOW_INSECURE_TLS: ${YTDLP_ALLOW_INSECURE_TLS:-0}
volumes:
- ./services/media-processor/temp_storage:/app/temp_storage
mem_limit: 2g
cpus: 1.5
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
restart: unless-stopped
networks:
- fastmedia-net
networks:
fastmedia-net:
driver: bridge