diff --git a/Dockerfile b/Dockerfile index d1d4b40..434c156 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,37 @@ +FROM debian:buster AS builder + +ENV DEBIAN_FRONTEND="noninteractive" + +# Enable deb-src repos so we can retrieve the packages used to build libopenjp2: +RUN sed -i -e '/^deb/p; s/^deb /deb-src /' /etc/apt/sources.list + +RUN apt-get update -qqy && apt-get dist-upgrade -qqy && apt-get install -qqy quilt devscripts ca-certificates ca-certificates-java && apt-get build-dep -qy libopenjp2-tools + +RUN adduser --system --group builder +RUN install -d -o builder -g builder /build + +USER builder + +WORKDIR /build + +RUN apt-get source openjpeg2 + +WORKDIR /build/openjpeg2-2.3.0 +ENV QUILT_PATCHES=debian/patches + +# Add the patch from https://github.com/uclouvain/openjpeg/issues/1207 +COPY handle_colorspace_conflicts.patch /build/ + +# Apply the patch to the local source directory +RUN quilt import /build/handle_colorspace_conflicts.patch +RUN quilt push -a -v + +# Build all of the openjpeg2 packages +RUN debuild -uc -us + FROM debian:buster -ENV CANTALOUPE_VERSION=4.1.5 +ENV CANTALOUPE_VERSION=4.1.11 EXPOSE 8182 @@ -8,9 +39,20 @@ VOLUME /imageroot # Update packages and install tools RUN apt-get update -qy && apt-get dist-upgrade -qy && \ - apt-get install -qy --no-install-recommends curl imagemagick \ - libopenjp2-tools ffmpeg unzip default-jre-headless && \ - apt-get -qqy autoremove && apt-get -qqy autoclean + apt-get install -qy --no-install-recommends \ + ca-certificates ca-certificates-java \ + curl \ + imagemagick \ + unzip \ + default-jre-headless \ + && apt-get -qqy autoremove && apt-get -qqy autoclean + +COPY LOC-ROOT-CA-1.crt /usr/local/share/ca-certificates/ +RUN update-ca-certificates + +# Install the patched openjpeg2 tools +COPY --from=builder /build/*.deb /tmp/ +RUN dpkg -i /tmp/libopenjp2-*.deb /tmp/libopenjp2-tools-*.deb # Run non privileged RUN adduser --system cantaloupe diff --git a/LOC-ROOT-CA-1.crt b/LOC-ROOT-CA-1.crt new file mode 100644 index 0000000..2cf7e78 --- /dev/null +++ b/LOC-ROOT-CA-1.crt @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/handle_colorspace_conflicts.patch b/handle_colorspace_conflicts.patch new file mode 100644 index 0000000..039397c --- /dev/null +++ b/handle_colorspace_conflicts.patch @@ -0,0 +1,13 @@ +--- a/src/bin/common/color.c 2019-08-08 00:45:01.903651387 +0200 ++++ b/src/bin/common/color.c 2019-08-08 00:39:24.442674016 +0200 +@@ -488,6 +488,10 @@ + if (out_space == cmsSigRgbData) { /* enumCS 16 */ + unsigned int i, nr_comp = image->numcomps; + ++ if (nr_comp < 3) { /* GRAY or GRAYA, not RGB or RGBA */ ++ cmsCloseProfile(in_prof); ++ return; ++ } + if (nr_comp > 4) { + nr_comp = 4; + }