services: web: build: context: ./web container_name: sortarr-web restart: unless-stopped depends_on: backend: condition: service_healthy ports: - "${SORTARR_WEB_PORT:-8088}:80" volumes: - ./web/src:/usr/share/nginx/html:ro - ./web/nginx.conf:/etc/nginx/conf.d/default.conf:ro environment: - TZ=${SORTARR_TZ:-Etc/UTC} backend: build: context: ./backend container_name: sortarr-backend init: true restart: unless-stopped healthcheck: test: ["CMD", "python", "-m", "sortarr.healthcheck"] interval: 30s timeout: 5s retries: 3 start_period: 10s ports: - "${SORTARR_API_PORT:-8099}:8099" volumes: - ${DOWNLOADS_PATH:-./downloads}:/downloads - ${CONFIG_PATH:-./config}:/config - ${LOGS_PATH:-./logs}:/logs - ${DATA_PATH:-./data}:/data - ${DRIVE1_PATH:-./media/drive1}:/media/drive1 - ${DRIVE2_PATH:-./media/drive2}:/media/drive2 - ${DRIVE3_PATH:-./media/drive3}:/media/drive3 - ${DRIVE4_PATH:-./media/drive4}:/media/drive4 environment: - TZ=${SORTARR_TZ:-Etc/UTC} - SORTARR_HOST=${SORTARR_HOST:-0.0.0.0} - SORTARR_API_PORT=8099 - SORTARR_CONFIG=/config/app.toml - SORTARR_DEFAULT_CONFIG=/app/default-config/app.toml - SORTARR_DATA_DIR=/data - SORTARR_LOG_DIR=/logs - SORTARR_CACHE_DIR=/data/cache - SORTARR_DRY_RUN=${SORTARR_DRY_RUN:-true} - SORTARR_LOG_LEVEL=${SORTARR_LOG_LEVEL:-INFO} - SORTARR_SCAN_INTERVAL_SECONDS=${SORTARR_SCAN_INTERVAL_SECONDS:-20} - SORTARR_SETTLE_SECONDS=${SORTARR_SETTLE_SECONDS:-90} - SORTARR_MIN_FREE_GB=${SORTARR_MIN_FREE_GB:-20} - TMDB_API_KEY=${TMDB_API_KEY:-} - TMDB_BEARER_TOKEN=${TMDB_BEARER_TOKEN:-} redis: image: redis:7-alpine container_name: sortarr-redis profiles: ["cache"] restart: unless-stopped volumes: - sortarr-redis:/data postgres: image: postgres:16-alpine container_name: sortarr-postgres profiles: ["database"] restart: unless-stopped environment: POSTGRES_DB: sortarr POSTGRES_USER: sortarr POSTGRES_PASSWORD: sortarr volumes: - sortarr-postgres:/var/lib/postgresql/data media-tools: image: lscr.io/linuxserver/ffmpeg:latest container_name: sortarr-media-tools profiles: ["tools"] command: ["sleep", "infinity"] volumes: - ${DOWNLOADS_PATH:-./downloads}:/downloads - ${DRIVE1_PATH:-./media/drive1}:/media/drive1 - ${DRIVE2_PATH:-./media/drive2}:/media/drive2 - ${DRIVE3_PATH:-./media/drive3}:/media/drive3 - ${DRIVE4_PATH:-./media/drive4}:/media/drive4 volumes: sortarr-redis: sortarr-postgres: