mirror of
https://github.com/jellyfin/jellyfin-packaging.git
synced 2026-09-03 03:29:58 +03:00
- Fix typo in the README - Added -f to rm from fix https://github.com/jellyfin/jellyfin/pull/11008 - Apply fix from https://github.com/jellyfin/jellyfin/pull/10763 - Refactor Docker for better syntax and readability - Update Intel runtime drivers to 24.05.28454.6 - Added possible miss line 159 docker/Dockerfile : "--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" - Removed wget in cleanup
97 lines
4.3 KiB
Docker
97 lines
4.3 KiB
Docker
# Docker build arguments
|
|
ARG DOTNET_VERSION=8.0
|
|
ARG NODEJS_VERSION=20
|
|
# Default to 12, but set externally by the `build.py` script
|
|
ARG GCC_VERSION=12
|
|
|
|
ARG PACKAGE_TYPE
|
|
ARG PACKAGE_VERSION
|
|
ARG PACKAGE_ARCH
|
|
|
|
FROM ${PACKAGE_TYPE}:${PACKAGE_VERSION}
|
|
|
|
ARG SOURCE_DIR=/jellyfin
|
|
ARG ARTIFACT_DIR=/dist
|
|
ARG DOTNET_VERSION
|
|
ARG NODEJS_VERSION
|
|
ARG PACKAGE_TYPE
|
|
ARG PACKAGE_VERSION
|
|
ARG PACKAGE_ARCH
|
|
ARG GCC_VERSION
|
|
|
|
# Docker run environment
|
|
ENV SOURCE_DIR=/jellyfin
|
|
ENV ARTIFACT_DIR=/dist
|
|
ENV DEB_BUILD_OPTIONS=noddebs
|
|
ENV TYPE=${PACKAGE_TYPE}
|
|
ENV VERSION=${PACKAGE_VERSION}
|
|
ENV ARCH=${PACKAGE_ARCH}
|
|
|
|
# Prepare Debian build environment
|
|
RUN apt-get update -y \
|
|
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
|
|
apt-get install --no-install-recommends -y \
|
|
wget debhelper gnupg devscripts build-essential mmv lsb-release \
|
|
libssl*.* liblttng-ust* libfontconfig*-dev libcurl*openssl-dev \
|
|
libfreetype*-dev libssl-dev
|
|
|
|
# Prepare the cross-toolchain
|
|
RUN if test "${PACKAGE_ARCH}" != "$( dpkg --print-architecture )"; then \
|
|
if grep -q -i ubuntu /etc/os-release; then \
|
|
rm /etc/apt/sources.list \
|
|
&& export CODENAME="$( lsb_release -c -s )" \
|
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
; fi \
|
|
&& set -o xtrace \
|
|
&& dpkg --add-architecture ${PACKAGE_ARCH} \
|
|
&& apt-get update -y \
|
|
&& apt-get install --no-install-recommends -y cross-gcc-dev \
|
|
&& TARGET_LIST="${PACKAGE_ARCH}" cross-gcc-gensource ${GCC_VERSION} \
|
|
&& cd cross-gcc-packages-amd64/cross-gcc-${GCC_VERSION}-${PACKAGE_ARCH} \
|
|
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
|
|
apt-get -f install --no-install-recommends -o Dpkg::Options::="--force-overwrite" -y \
|
|
bison flex libtool gdb sharutils netbase libmpc-dev libmpfr-dev libgmp-dev \
|
|
systemtap-sdt-dev autogen expect chrpath zlib1g-dev zip \
|
|
binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf \
|
|
gcc-${GCC_VERSION}-source libstdc++-${GCC_VERSION}-dev-${PACKAGE_ARCH}-cross \
|
|
libc6-dev:${PACKAGE_ARCH} linux-libc-dev:${PACKAGE_ARCH} libgcc1:${PACKAGE_ARCH} libstdc++-${GCC_VERSION}-dev:${PACKAGE_ARCH} \
|
|
libfontconfig*-dev:${PACKAGE_ARCH} libcurl*openssl-dev:${PACKAGE_ARCH} libfreetype*-dev:${PACKAGE_ARCH} libssl-dev:${PACKAGE_ARCH} \
|
|
libssl[13].*:${PACKAGE_ARCH} liblttng-ust*:${PACKAGE_ARCH} \
|
|
; fi
|
|
|
|
# Prepare dotnet SDK
|
|
RUN wget https://packages.microsoft.com/config/${PACKAGE_TYPE}/${PACKAGE_VERSION}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
|
|
&& dpkg -i packages-microsoft-prod.deb \
|
|
&& apt-get -f install \
|
|
&& apt-get update \
|
|
&& apt-get install -y dotnet-sdk-${DOTNET_VERSION}
|
|
|
|
# Prepare nodejs
|
|
RUN wget https://deb.nodesource.com/setup_${NODEJS_VERSION}.x -O nodejs-install.sh \
|
|
&& chmod +x ./nodejs-install.sh \
|
|
&& ./nodejs-install.sh \
|
|
&& apt-get install -y \
|
|
nodejs
|
|
|
|
# Clean up dependencies
|
|
RUN apt-get remove wget -y \
|
|
&& apt-get clean autoclean -y \
|
|
&& apt-get autoremove -y \
|
|
&& rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
|
|
|
|
# Link to build script
|
|
RUN ln -sf ${SOURCE_DIR}/debian/docker/build.sh /build.sh
|
|
|
|
VOLUME ${SOURCE_DIR}/
|
|
|
|
VOLUME ${ARTIFACT_DIR}/
|
|
|
|
ENTRYPOINT ["/build.sh"]
|