Created
November 24, 2021 20:53
-
-
Save derekr/37ab65399ac5b7da2953a72048a81c00 to your computer and use it in GitHub Desktop.
Build Postgres 13 with Postgis 3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM postgres:13 | |
LABEL maintainer="PostGIS Project - https://postgis.net" | |
ENV POSTGIS_MAJOR 3 | |
ENV POSTGIS_VERSION 3.1.4+dfsg-3.pgdg110+1 | |
RUN apt-get update \ | |
&& apt-cache showpkg postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR \ | |
&& apt-get install -y --no-install-recommends \ | |
postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR=$POSTGIS_VERSION \ | |
postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR-scripts=$POSTGIS_VERSION \ | |
&& rm -rf /var/lib/apt/lists/* | |
RUN mkdir -p /docker-entrypoint-initdb.d | |
COPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/postgis.sh | |
COPY ./update-postgis.sh /usr/local/bin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
set -e | |
# Perform all actions as $POSTGRES_USER | |
export PGUSER="$POSTGRES_USER" | |
# Create the 'template_postgis' template db | |
"${psql[@]}" <<- 'EOSQL' | |
CREATE DATABASE template_postgis; | |
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis'; | |
EOSQL | |
# Load PostGIS into both template_database and $POSTGRES_DB | |
for DB in template_postgis "$POSTGRES_DB"; do | |
echo "Loading PostGIS extensions into $DB" | |
"${psql[@]}" --dbname="$DB" <<-'EOSQL' | |
CREATE EXTENSION IF NOT EXISTS postgis; | |
CREATE EXTENSION IF NOT EXISTS postgis_topology; | |
CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; | |
CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder; | |
EOSQL | |
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
set -e | |
# Perform all actions as $POSTGRES_USER | |
export PGUSER="$POSTGRES_USER" | |
POSTGIS_VERSION="${POSTGIS_VERSION%%+*}" | |
# Load PostGIS into both template_database and $POSTGRES_DB | |
for DB in template_postgis "$POSTGRES_DB" "${@}"; do | |
echo "Updating PostGIS extensions '$DB' to $POSTGIS_VERSION" | |
psql --dbname="$DB" -c " | |
-- Upgrade PostGIS (includes raster) | |
CREATE EXTENSION IF NOT EXISTS postgis VERSION '$POSTGIS_VERSION'; | |
ALTER EXTENSION postgis UPDATE TO '$POSTGIS_VERSION'; | |
-- Upgrade Topology | |
CREATE EXTENSION IF NOT EXISTS postgis_topology VERSION '$POSTGIS_VERSION'; | |
ALTER EXTENSION postgis_topology UPDATE TO '$POSTGIS_VERSION'; | |
-- Install Tiger dependencies in case not already installed | |
CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; | |
-- Upgrade US Tiger Geocoder | |
CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder VERSION '$POSTGIS_VERSION'; | |
ALTER EXTENSION postgis_tiger_geocoder UPDATE TO '$POSTGIS_VERSION'; | |
" | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment