|
| 1 | +# SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | +# |
| 3 | +# Copyright (C) 2023 Olliver Schinagl <oliver@schinagl.nl> |
| 4 | + |
| 5 | +ARG ALPINE_VERSION="latest" |
| 6 | +ARG TARGET_ARCH="library" |
| 7 | + |
| 8 | +FROM docker.io/${TARGET_ARCH}/alpine:${ALPINE_VERSION} AS builder |
| 9 | + |
| 10 | +WORKDIR /src |
| 11 | + |
| 12 | +COPY . /src/ |
| 13 | + |
| 14 | +RUN apk add --no-cache \ |
| 15 | + 'avahi-dev' \ |
| 16 | + 'bash' \ |
| 17 | + 'bsd-compat-headers' \ |
| 18 | + 'build-base' \ |
| 19 | + 'cmake' \ |
| 20 | + 'coreutils' \ |
| 21 | + 'dbus-dev' \ |
| 22 | + 'ffmpeg4-dev' \ |
| 23 | + 'findutils' \ |
| 24 | + 'gettext-dev' \ |
| 25 | + 'git' \ |
| 26 | + 'gnu-libiconv-dev' \ |
| 27 | + 'libdvbcsa-dev' \ |
| 28 | + 'libhdhomerun-dev' \ |
| 29 | + 'libva-dev' \ |
| 30 | + 'libvpx-dev' \ |
| 31 | + 'linux-headers' \ |
| 32 | + 'musl-dev' \ |
| 33 | + 'openssl-dev>3' \ |
| 34 | + 'opus-dev' \ |
| 35 | + 'pngquant' \ |
| 36 | + 'python3' \ |
| 37 | + 'uriparser-dev' \ |
| 38 | + 'wget' \ |
| 39 | + 'x264-dev' \ |
| 40 | + 'x265-dev' \ |
| 41 | + 'zlib-dev' \ |
| 42 | + && \ |
| 43 | + git config --global --add safe.directory '/src/data/dvb-scan' && \ |
| 44 | + ./configure \ |
| 45 | + --prefix='/usr/local' \ |
| 46 | + --disable-doc \ |
| 47 | + --disable-execinfo \ |
| 48 | + --disable-ffmpeg_static \ |
| 49 | + --disable-hdhomerun_static \ |
| 50 | + --disable-libfdkaac_static \ |
| 51 | + --disable-libmfx_static \ |
| 52 | + --disable-libopus_static \ |
| 53 | + --disable-libtheora_static \ |
| 54 | + --disable-libvorbis_static \ |
| 55 | + --disable-libvpx_static \ |
| 56 | + --disable-libx264_static \ |
| 57 | + --disable-libx265_static \ |
| 58 | + --enable-bundle \ |
| 59 | + --enable-dvbcsa \ |
| 60 | + --enable-hdhomerun_client \ |
| 61 | + --enable-kqueue \ |
| 62 | + --enable-libav \ |
| 63 | + --enable-nvenc \ |
| 64 | + --enable-pngquant \ |
| 65 | + --enable-qsv \ |
| 66 | + --python=python3 \ |
| 67 | + && \ |
| 68 | + make DESTDIR='/tvheadend' -j$(($(nproc) - 1)) install |
| 69 | + |
| 70 | +FROM docker.io/${TARGET_ARCH}/alpine:${ALPINE_VERSION} |
| 71 | + |
| 72 | +LABEL maintainer="Olliver Schinagl <oliver@schinagl.nl>" |
| 73 | + |
| 74 | +EXPOSE 9981 \ |
| 75 | + 9982 \ |
| 76 | + 9983 |
| 77 | + |
| 78 | +RUN apk add --no-cache \ |
| 79 | + 'avahi' \ |
| 80 | + 'dbus-libs' \ |
| 81 | + 'ffmpeg4' \ |
| 82 | + 'ffmpeg4-libavcodec' \ |
| 83 | + 'ffmpeg4-libavdevice' \ |
| 84 | + 'ffmpeg4-libavfilter' \ |
| 85 | + 'ffmpeg4-libavfilter' \ |
| 86 | + 'ffmpeg4-libavformat' \ |
| 87 | + 'ffmpeg4-libavutil' \ |
| 88 | + 'ffmpeg4-libpostproc' \ |
| 89 | + 'ffmpeg4-libswresample' \ |
| 90 | + 'ffmpeg4-libswscale' \ |
| 91 | + 'gnu-libiconv-libs' \ |
| 92 | + 'libcrypto3' \ |
| 93 | + 'libdvbcsa' \ |
| 94 | + 'libhdhomerun-libs' \ |
| 95 | + 'libssl3' \ |
| 96 | + 'liburiparser' \ |
| 97 | + 'libva' \ |
| 98 | + 'libvpx' \ |
| 99 | + 'mesa' \ |
| 100 | + 'opus' \ |
| 101 | + 'perl-http-entity-parser' \ |
| 102 | + 'pngquant' \ |
| 103 | + 'python3' \ |
| 104 | + 'tini' \ |
| 105 | + 'x264-libs' \ |
| 106 | + 'x265-libs' \ |
| 107 | + 'xmltv' \ |
| 108 | + 'zlib' \ |
| 109 | + && \ |
| 110 | + [ "$(uname -m)" = 'x86'* ] && apk add --no-cache \ |
| 111 | + 'libva-intel-driver' \ |
| 112 | + ; \ |
| 113 | + [ "$(uname -m)" = 'x86_64' ] && apk add --no-cache \ |
| 114 | + 'intel-media-driver' \ |
| 115 | + ; \ |
| 116 | + addgroup -S 'tvheadend' && \ |
| 117 | + adduser -D -G 'tvheadend' -h '/var/lib/tvheadend' -s '/bin/nologin' -S 'tvheadend' && \ |
| 118 | + adduser 'tvheadend' 'audio' && \ |
| 119 | + adduser 'tvheadend' 'usb' && \ |
| 120 | + adduser 'tvheadend' 'video' && \ |
| 121 | + install -d -m 775 -g 'tvheadend' -o 'tvheadend' '/var/lib/tvheadend/recordings' && \ |
| 122 | + install -d -m 775 -g 'tvheadend' -o 'tvheadend' '/var/log/tvheadend' |
| 123 | + |
| 124 | +COPY --from=builder "/tvheadend" "/" |
| 125 | +COPY "./support/container-entrypoint.sh" "/init" |
| 126 | + |
| 127 | +VOLUME /var/lib/tvheadend |
| 128 | +VOLUME /var/lib/tvheadend/recordings |
| 129 | +WORKDIR /var/lib/tvheadend/ |
| 130 | +USER tvheadend |
| 131 | + |
| 132 | +ENTRYPOINT [ "/sbin/tini", "--", "/init" ] |
0 commit comments