## syntax=docker/dockerfile:1 #build container FROM golang:1.21-alpine3.18 as build WORKDIR /tmp/build ARG TARGETPLATFORM TARGETOS TARGETARCH BUILDOS BUILDARCH RUN apk update RUN apk upgrade --available RUN apk add alpine-sdk tar xz #build bloaterbot COPY . . RUN go mod download RUN mkdir /tmp/build/output ARG CGO_ENABLED=1 ENV COMMIT=${COMMIT} RUN go build -o /tmp/build/output/bloaterbot #download ffmpeg and yt-dlp RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ wget "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz" -O "/tmp/ffmpeg.tar.xz" && wget "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux" -O "/tmp/yt-dlp" && go build -o /tmp/build/output/bloaterbot; \ elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ wget "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-arm64-static.tar.xz" -O "/tmp/ffmpeg.tar.xz" && wget "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64" -O "/tmp/yt-dlp" && go build -o /tmp/build/output/bloaterbot; \ else \ echo "ERROR! Invalid build target" && exit 1; \ fi RUN mkdir /tmp/ffmpeg RUN tar -xvf /tmp/ffmpeg.tar.xz -C /tmp/ffmpeg --strip-components=1 #final container FROM alpine:3.18 #update system and install packages RUN apk update RUN apk upgrade --available WORKDIR /app COPY --from=build /tmp/build/output/bloaterbot /app/bloaterbot COPY --from=build /tmp/ffmpeg/ffmpeg /usr/local/bin/ffmpeg COPY --from=build /tmp/yt-dlp /usr/local/bin/yt-dlp RUN chmod +x /usr/local/bin/yt-dlp /usr/local/bin/ffmpeg COPY bloater.webp /app/bloater.webp COPY entrypoint.sh /app/entrypoint.sh RUN chmod -x /app/entrypoint.sh CMD ["/bin/ash", "/app/entrypoint.sh"]