From 80586aff5f56744da14dcb961743b9f5f244f50f Mon Sep 17 00:00:00 2001 From: Alexander Overvoorde Date: Sun, 22 Sep 2019 16:37:39 +0200 Subject: [PATCH] Fix Postgres not being reachable from outside container --- Dockerfile | 2 ++ README.md | 31 +++++++++++++++++++++++++++++++ postgresql.custom.conf.tmpl | 2 ++ run.sh | 13 +++++++++---- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3b091b5..3c964e8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -143,6 +143,8 @@ COPY postgresql.custom.conf.tmpl /etc/postgresql/10/main/ RUN chown -R postgres:postgres /var/lib/postgresql \ && chown postgres:postgres /etc/postgresql/10/main/postgresql.custom.conf.tmpl \ && echo "\ninclude 'postgresql.custom.conf'" >> /etc/postgresql/10/main/postgresql.conf +RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/10/main/pg_hba.conf \ + && echo "host all all ::/0 md5" >> /etc/postgresql/10/main/pg_hba.conf # copy update scripts COPY openstreetmap-tiles-update-expire /usr/bin/ diff --git a/README.md b/README.md index c8efc32..d5bcc13 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,37 @@ docker run \ run ``` +### Connecting to Postgres + +To connect to the PostgreSQL database inside the container, make sure to expose port 5432: + +``` +docker run \ + -p 80:80 \ + -p 5432:5432 \ + -v openstreetmap-data:/var/lib/postgresql/10/main \ + -d overv/openstreetmap-tile-server \ + run +``` + +Use the user `renderer` and the database `gis` to connect. + +``` +psql -h localhost -U renderer gis +``` + +The default password is `renderer`, but it can be changed using the `PGPASSWORD` environment variable: + +``` +docker run \ + -p 80:80 \ + -p 5432:5432 \ + -e PGPASSWORD=secret \ + -v openstreetmap-data:/var/lib/postgresql/10/main \ + -d overv/openstreetmap-tile-server \ + run +``` + ## Performance tuning and tweaking Details for update procedure and invoked scripts can be found here [link](https://ircama.github.io/osm-carto-tutorials/updating-data/). diff --git a/postgresql.custom.conf.tmpl b/postgresql.custom.conf.tmpl index 3f8be5c..1f1f315 100644 --- a/postgresql.custom.conf.tmpl +++ b/postgresql.custom.conf.tmpl @@ -21,3 +21,5 @@ random_page_cost = 1.1 track_activity_query_size = 16384 autovacuum_vacuum_scale_factor = 0.05 autovacuum_analyze_scale_factor = 0.02 + +listen_addresses = '*' diff --git a/run.sh b/run.sh index 857d847..035835b 100755 --- a/run.sh +++ b/run.sh @@ -2,13 +2,16 @@ set -x -function CreatePostgressqlConfig() -{ +function createPostgresConfig() { cp /etc/postgresql/10/main/postgresql.custom.conf.tmpl /etc/postgresql/10/main/postgresql.custom.conf sudo -u postgres echo "autovacuum = $AUTOVACUUM" >> /etc/postgresql/10/main/postgresql.custom.conf cat /etc/postgresql/10/main/postgresql.custom.conf } +function setPostgresPassword() { + sudo -u postgres psql -c "ALTER USER renderer PASSWORD '${PGPASSWORD:-renderer}'" +} + if [ "$#" -ne 1 ]; then echo "usage: " echo "commands:" @@ -22,7 +25,7 @@ fi if [ "$1" = "import" ]; then # Initialize PostgreSQL - CreatePostgressqlConfig + createPostgresConfig service postgresql start sudo -u postgres createuser renderer sudo -u postgres createdb -E UTF8 -O renderer gis @@ -30,6 +33,7 @@ if [ "$1" = "import" ]; then sudo -u postgres psql -d gis -c "CREATE EXTENSION hstore;" sudo -u postgres psql -d gis -c "ALTER TABLE geometry_columns OWNER TO renderer;" sudo -u postgres psql -d gis -c "ALTER TABLE spatial_ref_sys OWNER TO renderer;" + setPostgresPassword # Download Luxembourg as sample if no data is provided if [ ! -f /data.osm.pbf ]; then @@ -75,9 +79,10 @@ if [ "$1" = "run" ]; then fi # Initialize PostgreSQL and Apache - CreatePostgressqlConfig + createPostgresConfig service postgresql start service apache2 restart + setPostgresPassword # Configure renderd threads sed -i -E "s/num_threads=[0-9]+/num_threads=${THREADS:-4}/g" /usr/local/etc/renderd.conf