Sign inSign up

hcrit/postgis

By hcrit

•Updated over 6 years ago

PostGIS image based on postgis/postgis

Image
0

969

hcrit/postgis repository overview

⁠hcrit/postgis

hcrit/postgis is a fork of postgis/postgis docker image with certain additions:

  • Default database locale is hr_HR
  • Optional additional user with all privileges on database $POSTGRES_DB is created
  • Shell scripts for building image and running containers

Code is available at https://gitlab.com/cudovix/docker-postgis⁠ .

All changes are in the hcrit branch, so master branch is the same as in https://github.com/postgis/docker-postgis⁠ which is automatically mirrored into this repository.

Docker images are available at https://hub.docker.com/repository/docker/hcrit/postgis⁠

$ docker pull hcrit/postgis:latest

Additions to postgis/postgis are applied for the following image tags:

  • 12-3.0

⁠Creating additional user

To create additional user with CREATEDB privilege and all privileges on database $POSTGRES_DB, set environment variables DB_USER and DB_PASSWORD. If they are not defined, no additional user will be created.

⁠Usage

To run the container you can set environment variables POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB, DB_USER, DB_PASSWORD (some are optional) or pass them in the command. The easiest way is to put all varables into postgres.env file and pass it in the command.

Command passing the variable POSTGRES_PASSWORD:

$ docker run -d --name container_name -p 5432:5432 -v persistent_path:/var/lib/postgresql/data -e POSTGRES_PASSWORD=password hcrit/postgis:latest

Using postgres.env file:

$ docker run -d --name container_name -p 5432:5432 -v persistent_path:/var/lib/postgresql/data --env-file=postgres.env  hcrit/postgis:latest

⁠Accessing container on a docker host

To run psql in the container on a docker host:

$ docker exec -it container_name psql -U user_name -d database_name

To run bash shell in the container on a docker host:

$ docker exec -it container_name bash

⁠Management scripts

⁠Build

For building the image you can use script build.sh:

$ cd 12-3.0
$ . build.sh
⁠Run

For running the container you can use script run.sh. Before running, be sure to update run.sh to set container name, database port and local directory for persistent data mapping of /var/lib/postgresql/data. Also copy postgres.env.example to postgres.env and edit the values.

$ cd 12-3.0
$ . run.sh

⁠postgis/postgis

Build Status Join the chat at https://gitter.im/postgis/docker-postgis

The postgis/postgis image provides tags for running Postgres with PostGIS⁠ extensions installed. This image is based on the official postgres⁠ image and provides debian and alpine variants for PostGIS both 2.5.x and 3.0.x for each supported version of Postgres (9.5, 9.6, 10, 11, and 12). Additionally, an image version is provided which is built from the latest version of Postgres (12) with versions of PostGIS and its dependencies built from their respective master branches.

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 postgis/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

Tag summary

Content type

Image

Digest

Size

163.2 MB

Last updated

over 6 years ago

docker pull hcrit/postgis