services: pretranscode: build: context: ${PRETRANSCODE_BUILD_CONTEXT:-.} image: ${PRETRANSCODE_IMAGE:-pretranscode:latest} restart: unless-stopped init: true user: "${PRETRANSCODE_UID:-1000}:${PRETRANSCODE_GID:-1000}" environment: SOURCE_ROOT: /source VIEW_ROOT: /view CACHE_ROOT: /cache STATE_ROOT: /state JELLYFIN_URL: ${JELLYFIN_URL:?} JELLYFIN_API_KEY: ${JELLYFIN_API_KEY:?} JELLYFIN_LIBRARY_ROOT: ${JELLYFIN_LIBRARY_ROOT:-/data/library} JELLYFIN_ORIGINAL_ROOT: ${JELLYFIN_ORIGINAL_ROOT:-/data/original} JELLYFIN_CACHE_ROOT: ${JELLYFIN_CACHE_ROOT:-/data/cache} CACHE_MAX_BYTES: ${CACHE_MAX_BYTES:-1000000000000} SERIES_COOLDOWN_SECONDS: ${SERIES_COOLDOWN_SECONDS:-3600} POLL_SECONDS: ${POLL_SECONDS:-5} RESCAN_SECONDS: ${RESCAN_SECONDS:-300} H264_CRF: ${H264_CRF:-18} H264_PRESET: ${H264_PRESET:-medium} H264_MAXRATE: ${H264_MAXRATE:-15M} H264_BUFSIZE: ${H264_BUFSIZE:-30M} volumes: - ${MEDIA_LIBRARY_PATH:?}:/source:ro - ${PRETRANSCODE_VIEW_PATH:?}:/view - ${PRETRANSCODE_CACHE_PATH:?}:/cache - ${PRETRANSCODE_STATE_PATH:?}:/state networks: - media cpu_shares: 2 read_only: true tmpfs: - /tmp security_opt: - no-new-privileges:true stop_grace_period: 30s healthcheck: test: ["CMD-SHELL", "pgrep -f '/app/pretranscode run' >/dev/null"] interval: 30s timeout: 5s retries: 3 start_period: 30s networks: media: external: true name: ${MEDIA_NETWORK:-media-internal}