From a92db648736d3abb2e5dadfe77641321f17f1dfb Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Thu, 26 Oct 2023 22:00:01 +0800 Subject: [PATCH] build(docker): add support for AVIF on amd64/arm64 images Co-authored-by: Fahim <37258115+farahnur42@users.noreply.github.com> --- komga/docker/Dockerfile.tpl | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/komga/docker/Dockerfile.tpl b/komga/docker/Dockerfile.tpl index dc6610da3..3d428fb52 100644 --- a/komga/docker/Dockerfile.tpl +++ b/komga/docker/Dockerfile.tpl @@ -1,19 +1,36 @@ -FROM eclipse-temurin:19-jre as builder +FROM eclipse-temurin:17-jre as builder ARG JAR={{distributionArtifactFile}} COPY assembly/* / RUN java -Djarmode=layertools -jar ${JAR} extract -FROM eclipse-temurin:19-jre -# Install libjxl on x64 only. It is not available on other architectures. -RUN if [ "`uname -m`" = "x86_64" ]; then \ - apt -y update && \ - apt -y install wget && \ +# amd64 builder: uses ubuntu:22.04, as libjxl is not available on more recent versions +FROM ubuntu:22.04 as build-amd64 +ENV JAVA_HOME=/opt/java/openjdk +COPY --from=eclipse-temurin:21-jre $JAVA_HOME $JAVA_HOME +ENV PATH="${JAVA_HOME}/bin:${PATH}" +RUN apt -y update && \ + apt -y install software-properties-common wget && \ + add-apt-repository -y ppa:strukturag/libheif && \ + add-apt-repository -y ppa:strukturag/libde265 && \ + apt -y update && apt install -y libheif-dev && \ wget "https://github.com/libjxl/libjxl/releases/download/v0.8.2/jxl-debs-amd64-ubuntu-22.04-v0.8.2.tar.gz" && \ tar -xzf jxl-debs-amd64-ubuntu-22.04-v0.8.2.tar.gz && \ apt -y install ./jxl_0.8.2_amd64.deb ./libjxl_0.8.2_amd64.deb ./libjxl-dev_0.8.2_amd64.deb && \ rm *.deb && rm *.ddeb && rm jxl-debs-amd64-ubuntu-22.04-v0.8.2.tar.gz && \ - apt -y remove wget && apt -y clean && rm -rf /var/lib/apt/lists/*; fi + apt -y remove wget software-properties-common && apt -y autoremove && rm -rf /var/lib/apt/lists/* +# arm64 builder: uses ubuntu23.10 which has libheif 1.16 +FROM ubuntu:23.10 as build-arm64 +ENV JAVA_HOME=/opt/java/openjdk +COPY --from=eclipse-temurin:21-jre $JAVA_HOME $JAVA_HOME +ENV PATH="${JAVA_HOME}/bin:${PATH}" +RUN apt -y update && \ + apt -y install libheif-dev + +# arm builder: uses temurin-17, as arm32 support was dropped in JDK 21 +FROM eclipse-temurin:17-jre as build-arm + +FROM build-${TARGETARCH} AS runner VOLUME /tmp VOLUME /config WORKDIR app