Skip to content

Commit

Permalink
docker/alpine-normal: update dependencies, add libjxl and libkml deps…
Browse files Browse the repository at this point in the history
… [ci skip]
  • Loading branch information
rouault committed Nov 6, 2022
1 parent 58d46fd commit 6ce6376
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 45 deletions.
12 changes: 6 additions & 6 deletions docker/README.md
Expand Up @@ -10,8 +10,8 @@ best of our knowledge and not guaranteed. Users should check by themselves.
# Alpine based

Alpine version:
* 3.15 for 3.5
* 3.16 for GDAL 3.6dev
* 3.16 for GDAL 3.6
* 3.15 for GDAL 3.5

## Small: `osgeo/gdal:alpine-small-latest`

Expand All @@ -28,12 +28,12 @@ See [alpine-small/Dockerfile](alpine-small/Dockerfile)

## Normal: `osgeo/gdal:alpine-normal-latest`

* Image size: ~ 277 MB
* Image size: ~ 282 MB
* Raster drivers: small + netCDF, HDF5, BAG
* Vector drivers: small + Spatialite, XLS
* Using internal libtiff and libgeotiff
* External libraries enabled: small + libgeos, libhdf5, libhdf5, libkea, libnetcdf, libfreexl,
libspatialite, libxml2, libpoppler, openexr, libheif, libdeflate, libparquet
libspatialite, libxml2, libkml, libpoppler, openexr, libheif, libdeflate, libparquet, libjxl
* GDAL Python
* Base PROJ grid package (http://download.osgeo.org/proj/proj-datumgrid-1.8.zip)
* Overall licensing terms of the GDAL build: copy-left (GPL) + LGPL + permissive
Expand All @@ -43,8 +43,8 @@ See [alpine-normal/Dockerfile](alpine-normal/Dockerfile)
# Ubuntu based

Ubuntu version:
* 22.04 for GDAL 3.6
* 20.04 for GDAL 3.4 and 3.5
* 22.04 for GDAL 3.6dev

## Small: `osgeo/gdal:ubuntu-small-latest`

Expand All @@ -68,7 +68,7 @@ See [ubuntu-small/Dockerfile](ubuntu-small/Dockerfile)
* Using internal libtiff and libgeotiff
* External libraries enabled: small + libnetcdf, libhdf4, libhdf5, libtiledb, libkea,
mongocxx 3.4, libspatialite, unixodbc, libxml2, libcfitsio, libmysqlclient,
libkml, libpoppler, pdfium, openexr, libheif, libdeflate, libparquet
libkml, libpoppler, pdfium, openexr, libheif, libdeflate, libparquet, libjxl
* GDAL Python (Python 3.8 for Ubuntu 20.04, Python 3.10 for Ubuntu 22.04)
* *All* PROJ grid packages (equivalent of latest of proj-data-X.zip from http://download.osgeo.org/proj/ at time of generation, > 500 MB)
* Overall licensing terms of the GDAL build: copy-left (GPL) + LGPL + permissive
Expand Down
55 changes: 16 additions & 39 deletions docker/alpine-normal/Dockerfile
Expand Up @@ -24,15 +24,16 @@ RUN \
# For PROJ and GDAL
ARG POPPLER_DEV=poppler-dev
RUN apk add --no-cache \
linux-headers gnu-libiconv-dev \
cmake linux-headers gnu-libiconv-dev \
curl-dev tiff-dev \
zlib-dev zstd-dev xz-dev snappy-dev \
libjpeg-turbo-dev libpng-dev openjpeg-dev libwebp-dev expat-dev \
libjpeg-turbo-dev libpng-dev openjpeg-dev libwebp-dev expat-dev libkml-dev \
py3-numpy-dev python3-dev py3-setuptools py3-numpy \
${POPPLER_DEV} postgresql-dev \
openexr-dev libheif-dev xerces-c-dev geos-dev cfitsio-dev \
netcdf-dev hdf5-dev freexl-dev \
lz4-dev blosc-dev libdeflate-dev \
lz4-dev blosc-dev libdeflate-dev brotli-dev uriparser-dev \
kealib-dev libjxl-dev \
# For spatialite (and GDAL)
libxml2-dev \
&& mkdir -p /build_thirdparty/usr/lib
Expand Down Expand Up @@ -73,31 +74,10 @@ RUN if test "${HDF4_VERSION}" != "" -a "$(uname -m)" = "x86_64"; then ( \
&& apk del byacc flex portablexdr-dev \
); fi

# Build likbkea
ARG KEA_VERSION=1.4.15
RUN if test "${KEA_VERSION}" != ""; then ( \
apk add --no-cache cmake \
&& wget -q https://github.com/ubarsc/kealib/archive/kealib-${KEA_VERSION}.zip \
&& unzip -q kealib-${KEA_VERSION}.zip \
&& rm -f kealib-${KEA_VERSION}.zip \
&& cd kealib-kealib-${KEA_VERSION} \
&& cmake . -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr -DHDF5_INCLUDE_DIR=/usr/include/hdf5 \
-DHDF5_LIB_PATH=/usr/lib -DLIBKEA_WITH_GDAL=OFF \
&& make -j$(nproc) \
&& make install \
&& cd .. \
&& rm -rf kealib-kealib-${KEA_VERSION} \
&& cp -P /usr/lib/libkea*.so* /build_thirdparty/usr/lib \
&& for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \
&& apk del cmake \
); fi

# Build openjpeg
# ARG OPENJPEG_VERSION=2.3.1
RUN if test "${OPENJPEG_VERSION}" != ""; then ( \
apk add --no-cache cmake \
&& wget -q https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz \
wget -q https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz \
&& tar xzf v${OPENJPEG_VERSION}.tar.gz \
&& rm -f v${OPENJPEG_VERSION}.tar.gz \
&& cd openjpeg-${OPENJPEG_VERSION} \
Expand All @@ -110,14 +90,13 @@ RUN if test "${OPENJPEG_VERSION}" != ""; then ( \
&& for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \
&& cd .. \
&& rm -rf openjpeg-${OPENJPEG_VERSION} \
&& apk del cmake \
); fi

# Build Arrow Apache
ARG ARROW_VERSION=8.0.0
ARG ARROW_VERSION=10.0.0
RUN if test "${ARROW_VERSION}" != ""; then ( \
apk add --no-cache cmake snappy-dev \
&& wget -q https://dlcdn.apache.org/arrow/arrow-${ARROW_VERSION}/apache-arrow-${ARROW_VERSION}.tar.gz \
wget -q https://dlcdn.apache.org/arrow/arrow-${ARROW_VERSION}/apache-arrow-${ARROW_VERSION}.tar.gz \
&& apk add --no-cache re2-dev utf8proc-dev thrift-dev \
&& tar xzf apache-arrow-${ARROW_VERSION}.tar.gz \
&& rm -f apache-arrow-${ARROW_VERSION}.tar.gz \
&& cd apache-arrow-${ARROW_VERSION}/cpp \
Expand All @@ -129,15 +108,15 @@ RUN if test "${ARROW_VERSION}" != ""; then ( \
-DARROW_WITH_LZ4:BOOL=ON \
-DARROW_WITH_SNAPPY:BOOL=ON \
-DARROW_WITH_ZLIB:BOOL=ON \
-DARROW_WITH_ZSTD:BOOL=ON \
-DARROW_WITH_ZSTD:BOOL=ON \ \
-DARROW_WITH_BROTLI:BOOL=ON \
&& make -j$(nproc) \
&& make install \
&& cp -P /usr/lib/libarrow*.so* /build_thirdparty/usr/lib \
&& cp -P /usr/lib/libparquet*.so* /build_thirdparty/usr/lib \
&& for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \
&& cd ../../.. \
&& rm -rf apache-arrow-${ARROW_VERSION} \
&& apk del cmake \
); fi

RUN apk add --no-cache rsync ccache
Expand All @@ -146,7 +125,6 @@ ARG RSYNC_REMOTE
# Build PROJ
ARG PROJ_VERSION=master
RUN mkdir proj \
&& apk add --no-cache cmake \
&& wget -q https://github.com/OSGeo/PROJ/archive/${PROJ_VERSION}.tar.gz -O - \
| tar xz -C proj --strip-components=1 \
&& cd proj \
Expand Down Expand Up @@ -181,8 +159,7 @@ RUN mkdir proj \
&& cd .. \
&& rm -rf proj \
&& for i in /build_proj/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \
&& for i in /build_proj/usr/bin/*; do strip -s $i 2>/dev/null || /bin/true; done \
&& apk del cmake
&& for i in /build_proj/usr/bin/*; do strip -s $i 2>/dev/null || /bin/true; done

# Build spatialite
ARG SPATIALITE_VERSION=5.0.1
Expand Down Expand Up @@ -232,7 +209,6 @@ RUN if test "${GDAL_VERSION}" = "master"; then \
export GDAL_VERSION=$(curl -Ls https://api.github.com/repos/${GDAL_REPOSITORY}/commits/HEAD -H "Accept: application/vnd.github.VERSION.sha"); \
export GDAL_RELEASE_DATE=$(date "+%Y%m%d"); \
fi \
&& apk add --no-cache cmake \
&& if test "x${GDAL_BUILD_IS_RELEASE}" = "x"; then \
export GDAL_SHA1SUM=${GDAL_VERSION}; \
fi \
Expand Down Expand Up @@ -300,8 +276,7 @@ RUN if test "${GDAL_VERSION}" = "master"; then \
/build/usr/share/gdal/*.svg \
# unused
/build/usr/share/gdal/*.png \
;do rm $i; done)\
&& apk del cmake
;do rm $i; done)

# Build final image
FROM alpine:${ALPINE_VERSION} as runner
Expand All @@ -315,12 +290,14 @@ RUN apk add --no-cache \
sqlite-libs \
libcurl tiff \
zlib zstd-libs xz-libs snappy \
libjpeg-turbo libpng libwebp expat \
libjpeg-turbo libpng libwebp expat libkml \
icu-libs \
python3 py3-numpy ${POPPLER} pcre libpq libxml2 portablexdr openjpeg \
netcdf hdf5 freexl \
openexr libheif xerces-c geos cfitsio minizip \
lz4-libs blosc libdeflate snappy \
lz4-libs blosc libdeflate brotli-libs liburiparser \
kealib libjxl \
re2 utf8proc thrift-libs-cpp \
# Remove /usr/lib/libopenjp2.so.2.3.0 since we are building v2.3.1 manually
# && rm -f /usr/lib/libopenjp2.so.2.3.0 \
# libturbojpeg.so is not used by GDAL. Only libjpeg.so*
Expand Down

0 comments on commit 6ce6376

Please sign in to comment.