75 lines
No EOL
2.1 KiB
Docker
75 lines
No EOL
2.1 KiB
Docker
FROM golang:bookworm
|
|
|
|
ARG FFMPEG_VERSION=7.1
|
|
ARG LIBHEIF_VERSION=1.19.7
|
|
|
|
RUN apt-get update && \
|
|
apt-get upgrade -y && \
|
|
apt-get install -y --no-install-recommends \
|
|
bash \
|
|
git \
|
|
pkg-config \
|
|
build-essential \
|
|
tar \
|
|
wget \
|
|
xz-utils \
|
|
gcc \
|
|
cmake \
|
|
libde265-dev && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# libheif
|
|
ENV LIBHEIF_BUILD="https://github.com/strukturag/libheif/releases/download/v${LIBHEIF_VERSION}/libheif-${LIBHEIF_VERSION}.tar.gz"
|
|
RUN wget -O libheif.tar.gz ${LIBHEIF_BUILD} && \
|
|
mkdir -p libheif && \
|
|
tar -xzvf libheif.tar.gz -C libheif --strip-components=1 && \
|
|
rm libheif.tar.gz && \
|
|
cd libheif && \
|
|
mkdir build && \
|
|
cd build && \
|
|
cmake --preset=release .. && \
|
|
make && \
|
|
make install
|
|
|
|
# ffmpeg
|
|
RUN mkdir -p \
|
|
/usr/local/bin \
|
|
/usr/local/lib/pkgconfig/ \
|
|
/usr/local/lib/ \
|
|
/usr/local/include
|
|
|
|
RUN ARCH=$(uname -m) && \
|
|
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then \
|
|
echo "detected ARM architecture" && \
|
|
export FFMPEG_BUILD="https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n${FFMPEG_VERSION}-latest-linuxarm64-gpl-shared-${FFMPEG_VERSION}.tar.xz"; \
|
|
else \
|
|
echo "detected x86_64 architecture" && \
|
|
export FFMPEG_BUILD="https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n${FFMPEG_VERSION}-latest-linux64-gpl-shared-${FFMPEG_VERSION}.tar.xz"; \
|
|
fi && \
|
|
wget -O ffmpeg.tar.xz ${FFMPEG_BUILD} && \
|
|
mkdir -p ffmpeg && \
|
|
tar -xf ffmpeg.tar.xz -C ffmpeg --strip-components=1 && \
|
|
rm ffmpeg.tar.xz && \
|
|
cp -rv ffmpeg/bin/* /usr/local/bin/ && \
|
|
cp -rv ffmpeg/lib/* /usr/local/lib/ && \
|
|
cp -rv ffmpeg/include/* /usr/local/include/ && \
|
|
cp -rv ffmpeg/lib/pkgconfig/* /usr/local/lib/pkgconfig/ && \
|
|
ldconfig /usr/local
|
|
|
|
# env for building
|
|
ENV CGO_CFLAGS="-I/usr/local/include"
|
|
ENV CGO_LDFLAGS="-L/usr/local/lib"
|
|
ENV PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
|
|
|
|
WORKDIR /bot
|
|
|
|
RUN mkdir -p downloads
|
|
|
|
COPY . .
|
|
|
|
RUN chmod +x build.sh
|
|
|
|
RUN ./build.sh
|
|
|
|
ENTRYPOINT ["./govd"] |