diff --git a/.gitignore b/.gitignore index 149a5d0..41bc9cd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ output.opus .env *.wav *.opus -*.webm \ No newline at end of file +*.webm +*.tar.gz \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..76aaa28 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,69 @@ +# Use the official Debian Bookworm Slim image as the base +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"]