FROM docker.io/library/golang:1.24-alpine as builder WORKDIR /src COPY go.* . RUN go mod download COPY . . RUN go build -o /src/build/subsyt . FROM docker.io/library/alpine:3.21 RUN apk update && apk upgrade && apk add --no-cache \ bash \ ffmpeg \ aria2 \ pipx \ attr \ mutagen \ ca-certificates \ python3 \ py3-requests \ py3-certifi \ py3-brotli \ py3-mutagen \ py3-pycryptodomex \ py3-secretstorage \ py3-websockets RUN addgroup --gid 1000 subsyt \ && adduser --home /home/subsyt \ --shell /bin/bash \ --uid 1000 \ --ingroup subsyt \ --disabled-password \ subsyt RUN mkdir /data RUN mkdir /data/vids RUN touch /data/config.toml RUN touch /data/opml.xml RUN chown --recursive subsyt:subsyt /data USER subsyt RUN mkdir -p /data/vids COPY <<-EOT /data/config.toml dry_run = true out_dir = "/data/vids" daemon = false [provider] [provider.youtube] cmd = "/home/subsyt/.local/bin/yt-dlp" opml_file = "/data/opml.xml" url = "https://www.youtube.com" quality = "res:1080" output_path_template = "s%(upload_date>%Y)s/%(channel)s.s%(upload_date>%Y)Se%(upload_date>%m%d)S.%(title)s.%(id)s-1080p.%(ext)s" throttle = 5 range = "1:5:1" after_date = "" cookies_file = "" po_token = "" bgutil_server = "http://bgutil:4416" EOT WORKDIR /app RUN pipx ensurepath RUN source /home/subsyt/.bashrc RUN pipx install yt-dlp RUN pipx inject yt-dlp yt-dlp-get-pot RUN pipx inject yt-dlp bgutil-ytdlp-pot-provider COPY --from=builder --chown=subsyt:subsyt /src/build/subsyt /app/subsyt CMD [ "/app/subsyt", "--config=/data/config.toml" ]