Skip to content

Commit

Permalink
Use alpine3.20 as base image, add commit and build time to ffmpeg ver…
Browse files Browse the repository at this point in the history
…sion
  • Loading branch information
ioppermann committed Jul 11, 2024
1 parent 566a19f commit c911e5b
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 237 deletions.
25 changes: 10 additions & 15 deletions .github/workflows/build_base_alpine-rpi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ jobs:
docker:
runs-on: [self-hosted]
steps:
- name: Get current date
run: |
echo "CURRENT_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_ENV"
- name: Get current commit
run: |
echo "CURRENT_COMMIT=$(echo ${GITHUB_SHA} | head -c 7)" >> "$GITHUB_ENV"
- name: Checkout
uses: actions/checkout@v4

Expand Down Expand Up @@ -44,22 +52,9 @@ jobs:
file: ./Dockerfile.alpine.rpi
build-args: |
BUILD_IMAGE=${{ env.OS_NAME }}:${{ env.OS_VERSION }}
FREETYPE_VERSION=${{ env.FREETYPE_VERSION }}
XML2_VERSION=${{ env.XML2_VERSION }}
SRT_VERSION=${{ env.SRT_VERSION }}
X264_VERSION=${{ env.X264_VERSION }}
X265_VERSION=${{ env.X265_VERSION }}
VPX_VERSION=${{ env.VPX_VERSION }}
LAME_VERSION=${{ env.LAME_VERSION }}
OPUS_VERSION=${{ env.OPUS_VERSION }}
VORBIS_VERSION=${{ env.VORBIS_VERSION }}
DAV1D_VERSION=${{ env.DAV1D_VERSION }}
RAV1E_VERSION=${{ env.RAV1E_VERSION }}
ALSA_VERSION=${{ env.ALSA_VERSION }}
V4L_VERSION=${{ env.V4L_VERSION }}
FBDEV_VERSION=${{ env.FBDEV_VERSION }}
BUILD_DATE=${{ env.CURRENT_DATE }}
BUILD_COMMIT=${{ env.CURRENT_COMMIT }}
FFMPEG_VERSION=${{ env.FFMPEG_VERSION }}
RPI_VERSION=${{ env.RPI_VERSION }}
platforms: linux/arm64, linux/arm/v7
push: true
tags: |
Expand Down
24 changes: 10 additions & 14 deletions .github/workflows/build_base_alpine.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ jobs:
docker:
runs-on: [self-hosted]
steps:
- name: Get current date
run: |
echo "CURRENT_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_ENV"
- name: Get current commit
run: |
echo "CURRENT_COMMIT=$(echo ${GITHUB_SHA} | head -c 7)" >> "$GITHUB_ENV"
- name: Checkout
uses: actions/checkout@v4

Expand Down Expand Up @@ -44,20 +52,8 @@ jobs:
file: ./Dockerfile.alpine
build-args: |
BUILD_IMAGE=${{ env.OS_NAME }}:${{ env.OS_VERSION }}
FREETYPE_VERSION=${{ env.FREETYPE_VERSION }}
XML2_VERSION=${{ env.XML2_VERSION }}
SRT_VERSION=${{ env.SRT_VERSION }}
X264_VERSION=${{ env.X264_VERSION }}
X265_VERSION=${{ env.X265_VERSION }}
VPX_VERSION=${{ env.VPX_VERSION }}
LAME_VERSION=${{ env.LAME_VERSION }}
OPUS_VERSION=${{ env.OPUS_VERSION }}
VORBIS_VERSION=${{ env.VORBIS_VERSION }}
DAV1D_VERSION=${{ env.DAV1D_VERSION }}
RAV1E_VERSION=${{ env.RAV1E_VERSION }}
ALSA_VERSION=${{ env.ALSA_VERSION }}
V4L_VERSION=${{ env.V4L_VERSION }}
FBDEV_VERSION=${{ env.FBDEV_VERSION }}
BUILD_DATE=${{ env.CURRENT_DATE }}
BUILD_COMMIT=${{ env.CURRENT_COMMIT }}
FFMPEG_VERSION=${{ env.FFMPEG_VERSION }}
platforms: linux/amd64,linux/arm64,linux/arm/v7
push: true
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/build_base_ubuntu-cuda.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ jobs:
docker:
runs-on: [self-hosted]
steps:
- name: Get current date
run: |
echo "CURRENT_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_ENV"
- name: Get current commit
run: |
echo "CURRENT_COMMIT=$(echo ${GITHUB_SHA} | head -c 7)" >> "$GITHUB_ENV"
- name: Checkout
uses: actions/checkout@v4

Expand Down Expand Up @@ -44,6 +52,8 @@ jobs:
file: ./Dockerfile.ubuntu.cuda
build-args: |
BUILD_IMAGE=nvidia/cuda:${{ env.CUDA_VERSION }}-devel-${{ env.OS_NAME }}${{ env.OS_VERSION }}
BUILD_DATE=${{ env.CURRENT_DATE }}
BUILD_COMMIT=${{ env.CURRENT_COMMIT }}
DEPLOY_IMAGE=nvidia/cuda:${{ env.CUDA_VERSION }}-runtime-${{ env.OS_NAME }}${{ env.OS_VERSION }}
FFNVCODEC_VERSION=${{ env.FFNVCODEC_VERSION }}
FREETYPE_VERSION=${{ env.FREETYPE_VERSION }}
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/build_base_ubuntu-vaapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ jobs:
docker:
runs-on: [self-hosted]
steps:
- name: Get current date
run: |
echo "CURRENT_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_ENV"
- name: Get current commit
run: |
echo "CURRENT_COMMIT=$(echo ${GITHUB_SHA} | head -c 7)" >> "$GITHUB_ENV"
- name: Checkout
uses: actions/checkout@v4

Expand Down Expand Up @@ -44,6 +52,8 @@ jobs:
file: ./Dockerfile.ubuntu.vaapi
build-args: |
BUILD_IMAGE=${{ env.OS_NAME }}:${{ env.OS_VERSION }}
BUILD_DATE=${{ env.CURRENT_DATE }}
BUILD_COMMIT=${{ env.CURRENT_COMMIT }}
DEPLOY_IMAGE=${{ env.OS_NAME }}:${{ env.OS_VERSION }}
FREETYPE_VERSION=${{ env.FREETYPE_VERSION }}
XML2_VERSION=${{ env.XML2_VERSION }}
Expand Down
16 changes: 1 addition & 15 deletions Build.alpine.env
Original file line number Diff line number Diff line change
@@ -1,18 +1,4 @@
# FFMPEG BASE PACKAGES
OS_NAME=alpine
OS_VERSION=3.19
FREETYPE_VERSION=2.13.2-r0
XML2_VERSION=2.11.7-r0
SRT_VERSION=1.5.3-r0
X264_VERSION=0.164_git20231001-r0
X265_VERSION=3.5-r4
VPX_VERSION=1.13.1-r0
LAME_VERSION=3.100-r5
OPUS_VERSION=1.4-r0
VORBIS_VERSION=1.3.7-r2
DAV1D_VERSION=1.4.1-r0
RAV1E_VERSION=0.7.1-r0
FBDEV_VERSION=0.5.0-r5
ALSA_VERSION=1.2.10-r0
V4L_VERSION=1.24.1-r1
OS_VERSION=3.20
FFMPEG_VERSION=6.1.1
2 changes: 1 addition & 1 deletion Build.alpine.rpi.env
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# FFMPEG RPI PACKAGES
RPI_VERSION=0.20231020-r0

45 changes: 2 additions & 43 deletions Build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,6 @@ function build_default_native() {
docker build \
--progress=plain \
--build-arg BUILD_IMAGE=$OS_NAME:$OS_VERSION \
--build-arg FREETYPE_VERSION=$FREETYPE_VERSION \
--build-arg XML2_VERSION=$XML2_VERSION \
--build-arg SRT_VERSION=$SRT_VERSION \
--build-arg X264_VERSION=$X264_VERSION \
--build-arg X265_VERSION=$X265_VERSION \
--build-arg VPX_VERSION=$VPX_VERSION \
--build-arg LAME_VERSION=$LAME_VERSION \
--build-arg OPUS_VERSION=$OPUS_VERSION \
--build-arg VORBIS_VERSION=$VORBIS_VERSION \
--build-arg DAV1D_VERSION=$DAV1D_VERSION \
--build-arg RAV1E_VERSION=$RAV1E_VERSION \
--build-arg ALSA_VERSION=$ALSA_VERSION \
--build-arg V4L_VERSION=$V4L_VERSION \
--build-arg FBDEV_VERSION=$FBDEV_VERSION \
--build-arg FFMPEG_VERSION=$FFMPEG_VERSION \
-f Dockerfile.alpine \
-t datarhei/base:ffmpeg${FFMPEG_VERSION}-${OS_NAME}${OS_VERSION} .
Expand All @@ -40,21 +26,8 @@ function build_default() {
# --platform linux/amd64,linux/arm64,linux/arm/v7
docker buildx build \
--load \
--progress=plain \
--build-arg BUILD_IMAGE=$OS_NAME:$OS_VERSION \
--build-arg FREETYPE_VERSION=$FREETYPE_VERSION \
--build-arg XML2_VERSION=$XML2_VERSION \
--build-arg SRT_VERSION=$SRT_VERSION \
--build-arg X264_VERSION=$X264_VERSION \
--build-arg X265_VERSION=$X265_VERSION \
--build-arg VPX_VERSION=$VPX_VERSION \
--build-arg LAME_VERSION=$LAME_VERSION \
--build-arg OPUS_VERSION=$OPUS_VERSION \
--build-arg VORBIS_VERSION=$VORBIS_VERSION \
--build-arg DAV1D_VERSION=$DAV1D_VERSION \
--build-arg RAV1E_VERSION=$RAV1E_VERSION \
--build-arg ALSA_VERSION=$ALSA_VERSION \
--build-arg V4L_VERSION=$V4L_VERSION \
--build-arg FBDEV_VERSION=$FBDEV_VERSION \
--build-arg FFMPEG_VERSION=$FFMPEG_VERSION \
--platform linux/amd64 \
-f Dockerfile.alpine \
Expand All @@ -71,23 +44,9 @@ function build_rpi() {
# --platform linux/arm64,linux/arm/v7
docker buildx build \
--load \
--progress=plain \
--build-arg BUILD_IMAGE=$OS_NAME:$OS_VERSION \
--build-arg FREETYPE_VERSION=$FREETYPE_VERSION \
--build-arg XML2_VERSION=$XML2_VERSION \
--build-arg SRT_VERSION=$SRT_VERSION \
--build-arg X264_VERSION=$X264_VERSION \
--build-arg X265_VERSION=$X265_VERSION \
--build-arg VPX_VERSION=$VPX_VERSION \
--build-arg LAME_VERSION=$LAME_VERSION \
--build-arg OPUS_VERSION=$OPUS_VERSION \
--build-arg VORBIS_VERSION=$VORBIS_VERSION \
--build-arg DAV1D_VERSION=$DAV1D_VERSION \
--build-arg RAV1E_VERSION=$RAV1E_VERSION \
--build-arg FFMPEG_VERSION=$FFMPEG_VERSION \
--build-arg RPI_VERSION=$RPI_VERSION \
--build-arg ALSA_VERSION=$ALSA_VERSION \
--build-arg V4L_VERSION=$V4L_VERSION \
--build-arg FBDEV_VERSION=$FBDEV_VERSION \
--platform linux/arm64 \
-f Dockerfile.alpine.rpi \
-t datarhei/base:ffmpeg${FFMPEG_VERSION}-rpi-${OS_NAME}${OS_VERSION} .
Expand Down
92 changes: 22 additions & 70 deletions Dockerfile.alpine
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,13 @@ ARG BUILD_IMAGE=alpine:3.15

FROM $BUILD_IMAGE as builder

ARG FREETYPE_VERSION=0
ARG XML2_VERSION=0
ARG SRT_VERSION=0
ARG X264_VERSION=0
ARG X265_VERSION=0
ARG VPX_VERSION=0
ARG LAME_VERSION=0
ARG OPUS_VERSION=0
ARG VORBIS_VERSION=0
ARG DAV1D_VERSION=0
ARG RAV1E_VERSION=0
ARG FBDEV_VERSION=0
ARG ALSA_VERSION=0
ARG V4L_VERSION=0
ARG FFMPEG_VERSION=0
ARG BUILD_DATE=1970-01-01T00:00:00Z
ARG BUILD_COMMIT=unknown
ARG FFMPEG_VERSION=none

ENV PKG_CONFIG_PATH=/usr/lib/pkgconfig \
SRC=/usr

RUN echo "@edgecommunity https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
echo "@edgemain https://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories

# install build packages
RUN apk add --update \
autoconf \
Expand All @@ -48,24 +33,21 @@ RUN apk add --update \
openssl-dev \
patch \
tar \
zlib-dev

# install shared ffmpeg libs
RUN apk add -U \
freetype-dev=${FREETYPE_VERSION} \
libxml2-dev=${XML2_VERSION} \
libsrt-dev=${SRT_VERSION} \
x264-dev=${X264_VERSION} \
x265-dev=${X265_VERSION} \
libvpx-dev=${VPX_VERSION} \
lame-dev=${LAME_VERSION} \
opus-dev=${OPUS_VERSION} \
libvorbis-dev=${VORBIS_VERSION} \
dav1d-dev@edgemain=${DAV1D_VERSION} \
rav1e-dev@edgecommunity=${RAV1E_VERSION} \
alsa-lib-dev=${ALSA_VERSION} \
v4l-utils-dev=${V4L_VERSION} && \
ls -la /usr/lib
zlib-dev \
harfbuzz-dev \
freetype-dev \
libxml2-dev \
libsrt-dev \
x264-dev \
x265-dev \
libvpx-dev \
lame-dev \
opus-dev \
libvorbis-dev \
dav1d-dev \
rav1e-dev \
alsa-lib-dev \
v4l-utils-dev

# install and patch ffmpeg
RUN mkdir -p /dist && cd /dist && \
Expand All @@ -79,7 +61,7 @@ RUN cd /dist/ffmpeg-${FFMPEG_VERSION} && \
patch -p1 < /contrib/ffmpeg-jsonstats.patch && \
patch -p1 < /contrib/ffmpeg-hls.patch && \
./configure \
--extra-version=datarhei \
--extra-version="datarhei-${BUILD_COMMIT}-${BUILD_DATE}" \
--prefix="${SRC}" \
--extra-libs="-lpthread -lxml2 -lm -lsupc++ -lstdc++ -lssl -lcrypto -lz -lc -ldl" \
--enable-nonfree \
Expand Down Expand Up @@ -111,50 +93,20 @@ RUN cd /dist/ffmpeg-${FFMPEG_VERSION} && \

# export shared ffmpeg libs
RUN mkdir -p /ffmpeg/lib && \
cp \
/usr/lib/libfreetype.so.6 \
/usr/lib/libxml2.so.2 \
/usr/lib/libsrt.so.1.5 \
/usr/lib/liblzma.so.5 \
/usr/lib/libmp3lame.so.0 \
/usr/lib/libx264.so.164 \
/usr/lib/libx265.so.199 \
/usr/lib/libcurl.so.4 \
/usr/lib/libgcc_s.so.1 \
/usr/lib/libbz2.so.1 \
/usr/lib/libpng16.so.16 \
/usr/lib/libbrotlidec.so.1 \
/usr/lib/libstdc++.so.6 \
/usr/lib/libnuma.so.1 \
/usr/lib/libcares.so.2 \
/usr/lib/libnghttp2.so.14 \
/usr/lib/libidn2.so.0 \
/usr/lib/libbrotlicommon.so.1 \
/usr/lib/libunistring.so.5 \
/usr/lib/libvpx.so.8 \
/usr/lib/libopus.so.0 \
/usr/lib/libvorbis.so.0 \
/usr/lib/libvorbisenc.so.2 \
/usr/lib/libogg.so.0 \
/usr/lib/libdav1d.so.7 \
/usr/lib/librav1e.so.0.7 \
/ffmpeg/lib
ldd /usr/bin/ffmpeg | grep -o -e '/usr/lib/[^ ]*' | xargs -I % cp -v % /ffmpeg/lib

FROM $BUILD_IMAGE as final

COPY --from=builder /usr/bin/ffmpeg /usr/bin/ffmpeg
COPY --from=builder /ffmpeg/lib/* /usr/lib/

ARG FBDEV_VERSION=0.5.0-r3
ARG V4L_VERSION=1.22.1-r1

RUN apk add --no-cache \
ca-certificates \
libssl3 \
tzdata \
alsa-lib \
xf86-video-fbdev=${FBDEV_VERSION} \
v4l-utils=${V4L_VERSION} && \
xf86-video-fbdev \
v4l-utils && \
ffmpeg -buildconf

WORKDIR /tmp
Expand Down
Loading

0 comments on commit c911e5b

Please sign in to comment.