# # NOTE: THIS DOCKERFILE IS GENERATED VIA "make update"! PLEASE DO NOT EDIT IT DIRECTLY. # ARG BASE_IMAGE=postgres:18-alpine3.24 FROM ${BASE_IMAGE} ARG NPROC= LABEL maintainer="PostGIS Project - https://postgis.net" \ org.opencontainers.image.description="PostGIS 3.6.4 spatial database extension with PostgreSQL 18 Alpine" \ org.opencontainers.image.source="https://github.com/postgis/docker-postgis" ENV POSTGIS_VERSION=3.6.4 ENV POSTGIS_SHA256=4f80e1a4d227f088ae818f79180debd5894c075615823e0f556f73479cf1f200 RUN set -eux \ && apk add --no-cache --virtual .fetch-deps \ ca-certificates \ openssl \ tar \ \ && wget -O postgis.tar.gz "https://github.com/postgis/postgis/archive/${POSTGIS_VERSION}.tar.gz" \ && echo "${POSTGIS_SHA256} *postgis.tar.gz" | sha256sum -c - \ && mkdir -p /usr/src/postgis \ && tar \ --extract \ --file postgis.tar.gz \ --directory /usr/src/postgis \ --strip-components 1 \ && rm postgis.tar.gz \ \ && apk add --no-cache --virtual .build-deps \ \ gdal-dev \ geos-dev \ proj-dev \ proj-util \ sfcgal-dev \ \ # The upstream variable, '$DOCKER_PG_LLVM_DEPS' contains # the correct versions of 'llvm-dev' and 'clang' for the current version of PostgreSQL. # This improvement has been discussed in https://github.com/docker-library/postgres/pull/1077 $DOCKER_PG_LLVM_DEPS \ \ autoconf \ automake \ cunit-dev \ file \ g++ \ gcc \ gettext-dev \ git \ json-c-dev \ libtool \ libxml2-dev \ make \ pcre2-dev \ perl \ protobuf-c-dev \ \ # build PostGIS - with Link Time Optimization (LTO) enabled && cd /usr/src/postgis \ && gettextize \ && ./autogen.sh \ && ./configure \ --enable-lto \ && make -j${NPROC:-$(nproc)} \ && make install \ \ # This section is for refreshing the proj data for the regression tests. # It serves as a workaround for an issue documented at https://trac.osgeo.org/postgis/ticket/5316 # This increases the Docker image size by about 1 MB. && projsync --system-directory --file ch_swisstopo_CHENyx06_ETRS \ && projsync --system-directory --file us_noaa_eshpgn \ && projsync --system-directory --file us_noaa_prvi \ && projsync --system-directory --file us_noaa_wmhpgn \ # This section performs a regression check. && mkdir /tempdb \ && chown -R postgres:postgres /tempdb \ && su postgres -c 'pg_ctl -D /tempdb init' \ && su postgres -c 'pg_ctl -D /tempdb -c -l /tmp/logfile -o '-F' start ' \ && cd regress \ && make -j${NPROC:-$(nproc)} check RUNTESTFLAGS="--extension --verbose" PGUSER=postgres \ \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS postgis;"' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS postgis_raster;"' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS postgis_sfcgal;"' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; --needed for postgis_tiger_geocoder "' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS address_standardizer;"' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS address_standardizer_data_us;"' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder;"' \ && su postgres -c 'psql -c "CREATE EXTENSION IF NOT EXISTS postgis_topology;"' \ && su postgres -c 'psql -t -c "SELECT version();"' >> /_pgis_full_version.txt \ && su postgres -c 'psql -t -c "SELECT PostGIS_Full_Version();"' >> /_pgis_full_version.txt \ && su postgres -c 'psql -t -c "\dx"' >> /_pgis_full_version.txt \ \ && su postgres -c 'pg_ctl -D /tempdb --mode=immediate stop' \ && rm -rf /tempdb \ && rm -rf /tmp/logfile \ && rm -rf /tmp/pgis_reg \ # add .postgis-rundeps && apk add --no-cache --virtual .postgis-rundeps \ \ gdal \ geos \ proj \ sfcgal \ \ json-c \ libstdc++ \ pcre2 \ protobuf-c \ \ # ca-certificates: for accessing remote raster files # fix https://github.com/postgis/docker-postgis/issues/307 ca-certificates \ # clean && cd / \ && rm -rf /usr/src/postgis \ && apk del .fetch-deps .build-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt COPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/10_postgis.sh COPY ./update-postgis.sh /usr/local/bin