# Use the official golang:1.22.12-bookworm FROM golang:1.22.12-bookworm as build RUN mkdir /app WORKDIR /app COPY ./ /app/ RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ wget \ vim \ git \ debconf \ ca-certificates \ tar \ autoconf \ automake \ build-essential \ cmake \ git-core \ libass-dev \ libfreetype6-dev \ libgnutls28-dev \ libmp3lame-dev \ libsdl2-dev \ libtool \ libva-dev \ libvdpau-dev \ libvorbis-dev \ libxcb1-dev \ libxcb-shm0-dev \ libxcb-xfixes0-dev \ meson \ ninja-build \ pkg-config \ texinfo \ yasm \ zlib1g-dev \ libx264-dev \ libx265-dev \ libnuma-dev \ libvpx-dev \ libopus-dev \ libunistring-dev \ libaom-dev \ libdav1d-dev && \ # go version && \ go mod download && \ wget --no-check-certificate -c https://github.com/yt-dlp/yt-dlp/releases/download/2025.01.26/yt-dlp_linux &&\ wget --no-check-certificate -c https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-6.0.1-amd64-static.tar.xz &&\ mv yt-dlp_linux /usr/bin/yt-dlp && \ chmod 755 /usr/bin/yt-dlp && \ chmod +x /usr/bin/yt-dlp && \ tar -xf ffmpeg-6.0.1-amd64-static.tar.xz && \ rm -rf ffmpeg-6.0.1-amd64-static.tar.xz && \ chmod +x ffmpeg-6.0.1-amd64-static/ffmpeg && \ chmod +x ffmpeg-6.0.1-amd64-static/ffprobe && \ cp -R ffmpeg-6.0.1-amd64-static/ffmpeg /usr/bin/ && \ cp -R ffmpeg-6.0.1-amd64-static/ffprobe /usr/bin/ && \ rm -rf ffmpeg-6.0.1-amd64-static && \ useradd papibot && \ CGO_ENABLED=0 GOOS=linux go build -o /app/papibot FROM golang:1.22.12-bookworm RUN groupadd -r papibot && useradd -r -g papibot papibot USER papibot COPY --from=build --chown=papibot:papibot /usr/bin/ /usr/bin COPY --from=build --chown=papibot:papibot /app/ /app/ WORKDIR /app/ ENTRYPOINT ["./papibot"]