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:
-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
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
I was wondering if this project has the tiger databases already loaded?
this is fantastic, how do I add a volume option say PGDATA and link to host?
@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)
How about an environment variable for default DB?
Thanks for adding Alpine!! Awesome!
How about Alpine Linux? :-)
Not working for me. :(
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
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.
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.