Public | Automated Build

Last pushed: 12 hours ago
Short Description
PostGIS 2.3 on Postgres 9. Based on the official Postgres container.
Full Description

mdillon/postgis

The mdillon/postgis image provides a Docker container running Postgres 9 with PostGIS 2.3 installed. This image is based on the official postgres image and provides variants for each version of Postgres 9 supported by the base image (9.2-9.6).

This image ensures that the default database created by the parent postgres image will have the following extensions installed:

  • postgis
  • postgis_topology
  • fuzzystrmatch
  • postgis_tiger_geocoder

Unless -e POSTGRES_DB is passed to the container at startup time, this database will be named after the admin user (either postgres or the user specified with -e POSTGRES_USER). If you would prefer to use the older template database mechanism for enabling PostGIS, the image also provides a PostGIS-enabled template database called template_postgis.

Usage

In order to run a basic container capable of serving a PostGIS-enabled database, start a container as follows:

docker run --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d mdillon/postgis

For more detailed instructions about how to start and control your Postgres container, see the documentation for the postgres image here.

Once you have started a database container, you can then connect to the database as follows:

docker run -it --link some-postgis:postgres --rm postgres \
    sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'

See the PostGIS documentation for more details on your options for creating and using a spatially-enabled database.

Known Issues / Errors

When You encouter errors due to PostGIS update OperationalError: could not access file "$libdir/postgis-X.X, run:

docker exec some-postgis update-postgis.sh

It will update to Your newest PostGIS. Update is idempotent, so it won't hurt when You run it more than once, You will get notification like:

Updating PostGIS extensions template_postgis to X.X.X
NOTICE:  version "X.X.X" of extension "postgis" is already installed
NOTICE:  version "X.X.X" of extension "postgis_topology" is already installed
NOTICE:  version "X.X.X" of extension "postgis_tiger_geocoder" is already installed
ALTER EXTENSION
Updating PostGIS extensions docker to X.X.X
NOTICE:  version "X.X.X" of extension "postgis" is already installed
NOTICE:  version "X.X.X" of extension "postgis_topology" is already installed
NOTICE:  version "X.X.X" of extension "postgis_tiger_geocoder" is already installed
ALTER EXTENSION
Docker Pull Command
Owner
mdillon
Source Repository

Comments (18)
ferrinkatz
11 days ago

I was wondering if this project has the tiger databases already loaded?

getmetorajesh
3 months ago

this is fantastic, how do I add a volume option say PGDATA and link to host?

colehoward
4 months ago

@onit the POSTGRES_DB environment variable handles that. you can use all the same env vars from the library/postgres image. If not provided, the default DB is named for the default user (also modified by the POSTGRES_USER variable)

onit
4 months ago

How about an environment variable for default DB?

boozedog
5 months ago

Thanks for adding Alpine!! Awesome!

boozedog
6 months ago

How about Alpine Linux? :-)

augnustin
7 months ago

Not working for me. :(
I get:

ActiveRecord::StatementInvalid: PG::UndefinedFile: ERROR:  could not open extension control file "/usr/share/postgresql/9.6/extension/postgis.control": No such file or directory
: CREATE EXTENSION IF NOT EXISTS "postgis"
PG::UndefinedFile: ERROR:  could not open extension control file "/usr/share/postgresql/9.6/extension/postgis.control": No such file or directory
smills
9 months ago

Just re-deployed the 9.5 tagged image to my server and it failed to run properly due to the postgis extension being updated. How do I point to a specific version of postgis to stop that happening in future? It seems the tags only allow postgres version to be specified.

datarella
2 years ago

Hi, I have tried to build from source but got errors

E: Version '2.1.7+dfsg-3~94.git954a8d0.pgdg80+1' for 'postgresql-9.3-postgis-2.1' was not found
E: Version '2.1.7+dfsg-3~94.git954a8d0.pgdg80+1' for 'postgis' was not found

seems to be a package management issue.

mdillon
2 years ago

@pkorduan Unfortunately no. I think that would be a great thing to have, but this would need to be taken up with the PostGIS maintainers: http://postgis.net/support