Public | Automated Build

Last pushed: 37 minutes 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 (17)
getmetorajesh
23 days ago

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

colehoward
2 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
2 months ago

How about an environment variable for default DB?

boozedog
3 months ago

Thanks for adding Alpine!! Awesome!

boozedog
4 months ago

How about Alpine Linux? :-)

augnustin
5 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
7 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

pkorduan
2 years ago

Thanks for this docker image. I use it for a web mapping application. Therefore I create a container from this image and link it into my web server container. Everything works fine so far, but how can my web application, running inside the web server container have access to the loader shp2pgsql and pgsql2shp in the database container? As far as I can see I have to install the loader in my web server container. But apt-get install postgis will also install all the other dependencies postgis and postgresql which is allready in the postgis container. Isn't it redundant to do so. Do anyone know a debian package only with the loader?