# SPDX-License-Identifier: MIT # Copyright (c) 2026 Rug Munch Media LLC # Part of Pry — https://git.rugmunch.io/RugMunchMedia/pryscraper # Licensed under MIT. See LICENSE. services: pry: build: . container_name: pry restart: unless-stopped ports: - "127.0.0.1:8005:8002" volumes: - pry-data:/root/.pry - pry-sessions:/app/sessions env_file: .env environment: - PYTHONUNBUFFERED=1 - PRY_TIMEOUT=60 - FLARESOLVERR_URL=http://flaresolverr:8191/v1 - TOR_ENABLED=0 - TOR_SOCKS5_HOST=tor - TOR_SOCKS5_PORT=9050 - PROXY_URL= - PROXY_TYPE=http - IP_ROTATION=off - MAX_RETRIES=3 - MIN_QUALITY=20 - RATE_LIMIT_RPM=120 healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:8002/health"] interval: 15s timeout: 5s retries: 3 start_period: 30s deploy: resources: limits: memory: 2G cpus: "2" depends_on: flaresolverr: condition: service_healthy flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest container_name: pry-flaresolverr restart: unless-stopped ports: - "127.0.0.1:8192:8191" environment: - LOG_LEVEL=info - CAPTCHA_SOLVER=none healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:8191/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s deploy: resources: limits: memory: 512M cpus: "1" tor: image: dperson/torproxy:latest container_name: pry-tor restart: unless-stopped ports: - "127.0.0.1:9050:9050" - "127.0.0.1:9051:9051" deploy: resources: limits: memory: 128M cpus: "0.5" profiles: - tor volumes: pry-data: pry-sessions: redis: image: redis:7-alpine container_name: pry-redis restart: unless-stopped ports: - "127.0.0.1:6379:6379" volumes: - pry-redis:/data deploy: resources: limits: memory: 512M cpus: "0.5" postgres: image: postgres:15-alpine container_name: pry-postgres restart: unless-stopped ports: - "127.0.0.1:5432:5432" volumes: - pry-postgres:/var/lib/postgresql/data environment: - POSTGRES_USER=pry - POSTGRES_PASSWORD=pry - POSTGRES_DB=pry deploy: resources: limits: memory: 512M cpus: "0.5" volumes: pry-sessions: pry-redis: pry-postgres: