build(docker): add support for AVIF on amd64/arm64 images

Co-authored-by: Fahim <37258115+farahnur42@users.noreply.github.com>
This commit is contained in:
Gauthier Roebroeck 2023-10-26 22:00:01 +08:00
parent 0267ba8e5a
commit a92db64873

View file

@ -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