From 9275966c0a9e1be7789ad28e475cbd5d4eaff165 Mon Sep 17 00:00:00 2001 From: Nat Hillard Date: Tue, 4 May 2021 14:56:49 -0400 Subject: [PATCH] Simplifying, adding initialization script to docker-compose --- server/README.md | 14 ++++++++-- server/config/cache.env.example | 9 ------- server/config/db.env.example | 5 ---- server/config/tileserv.env.example | 4 --- server/docker-compose.yml | 42 +++++++++++++----------------- server/init.sql | 1 - server/load-data-db.sh | 12 +++++++++ server/load-data.sh | 7 ----- 8 files changed, 42 insertions(+), 52 deletions(-) delete mode 100644 server/config/cache.env.example delete mode 100644 server/config/db.env.example delete mode 100644 server/config/tileserv.env.example delete mode 100644 server/init.sql create mode 100755 server/load-data-db.sh delete mode 100755 server/load-data.sh diff --git a/server/README.md b/server/README.md index faac98db..7bafb6b2 100644 --- a/server/README.md +++ b/server/README.md @@ -1,5 +1,15 @@ # Tile Server -A simple tile server using [pg_tileserv](https://github.com/CrunchyData/pg_tileserv). +## What is it? -Based on pg_tileserv [docker example](https://github.com/CrunchyData/pg_tileserv/tree/master/examples/docker). +A simple tile server using [pg_tileserv](https://github.com/CrunchyData/pg_tileserv), based on pg_tileserv [docker example](https://github.com/CrunchyData/pg_tileserv/tree/master/examples/docker). + +## How to use it? + +1. Edit variables in `docker-compose.yml` if necessary to customize username/pw +2. Run `docker-compose up` to start running the server. It will likely stall in enabling extensions (TODO: figure this out)) +3. Restart the server with ctrl-c. It should load the data from the `data/` directory exactly one time. + +## Using + +- Point your visualization library to the following URL, and select `vector` tiles: `http://localhost:7800/public.maryland/{z}/{x}/{y}.mvt` diff --git a/server/config/cache.env.example b/server/config/cache.env.example deleted file mode 100644 index d9d0e576..00000000 --- a/server/config/cache.env.example +++ /dev/null @@ -1,9 +0,0 @@ -BACKENDS_PROBE_INTERVAL: "15s" -BACKENDS_PROBE_TIMEOUT: "5s" -BACKENDS_PROBE_WINDOW: "3" -BACKENDS: "tileserv:7800" -DNS_ENABLED: "false" -DASHBOARD_USER: "admin" -DASHBOARD_PASSWORD: "admin1234" -DASHBOARD_SERVERS: "web" -PARAM_VALUE: "-p default_ttl=600" \ No newline at end of file diff --git a/server/config/db.env.example b/server/config/db.env.example deleted file mode 100644 index 16819a43..00000000 --- a/server/config/db.env.example +++ /dev/null @@ -1,5 +0,0 @@ -POSTGRES_USER=tileserv -POSTGRES_PASS=tileserv -PGUSER=tileserv -PGPASS=tileserv -POSTGRES_DBNAME=tileserv \ No newline at end of file diff --git a/server/config/tileserv.env.example b/server/config/tileserv.env.example deleted file mode 100644 index 1b616c48..00000000 --- a/server/config/tileserv.env.example +++ /dev/null @@ -1,4 +0,0 @@ -DATABASE_URL=postgres://tileserv:tileserv@tileserv_db/tileserv -POSTGRES_USER=tileserv -POSTGRES_PASSWORD=tileserv -POSTGRES_DB=tileserv \ No newline at end of file diff --git a/server/docker-compose.yml b/server/docker-compose.yml index 9730b12c..99941874 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -1,40 +1,34 @@ -version: "3.9" # optional since v1.27.0 +version: "3.9" services: tileserv: image: pramsey/pg_tileserv:20210210 - container_name: tileserv - env_file: - - ./config/tileserv.env + environment: + - DATABASE_URL=postgresql://map_dev_user:map_pwd@db/map_dev depends_on: - tileserv_db: + db: condition: service_healthy ports: - 7800:7800 - tileserv_db: + restart: unless-stopped + db: image: kartoza/postgis:13-3.1 - container_name: tileserv_db volumes: + - pgdata:/var/lib/postgresql/data - ./data:/work - - local_db:/var/lib/postgresql/data - - ./init.sql:/docker-entrypoint-initdb.d/init.sql + - ./load-data-db.sh:/docker-entrypoint-initdb.d/load_data-db.sh + environment: + - POSTGRES_USER=map_dev_user + - POSTGRES_PASS=map_pwd + - POSTGRES_DB=map_dev + - ALLOW_IP_RANGE=0.0.0.0/0 + ports: + - 5434:5432 healthcheck: - test: ["CMD-SHELL", "pg_isready -U tileserv"] + test: ["CMD-SHELL", "pg_isready -U map_dev_user -d map_dev"] interval: 5s timeout: 5s retries: 5 - env_file: - - ./config/db.env - - # See https://blog.crunchydata.com/blog/production-postgis-vector-tiles-caching - # cache: - # image: eeacms/varnish - # container_name: tileserv_cache - # ports: - # - "80:6081" - # env_file: - # - ./config/cache.env - # depends_on: - # - tileserv + restart: unless-stopped volumes: - local_db: + pgdata: diff --git a/server/init.sql b/server/init.sql deleted file mode 100644 index 04892e25..00000000 --- a/server/init.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE EXTENSION IF NOT EXISTS postgis; \ No newline at end of file diff --git a/server/load-data-db.sh b/server/load-data-db.sh new file mode 100755 index 00000000..5c95f38a --- /dev/null +++ b/server/load-data-db.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail + +# echo "[SQL INIT SCRIPT] Creating extension..." +# psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "gis" <<-EOSQL +# CREATE EXTENSION IF NOT EXISTS postgis; +# EOSQL + +# Load Maryland geojson +echo "[SQL INIT SCRIPT] Loading data from geojson..." +ogr2ogr -progress -f PostgreSQL PG:"host=localhost dbname=map_dev user=map_dev_user password=map_pwd" /work/maryland.geojson -nln maryland +echo "Data load complete" diff --git a/server/load-data.sh b/server/load-data.sh deleted file mode 100755 index e207ce8e..00000000 --- a/server/load-data.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Load Maryland geojson -echo "Loading data..." -docker-compose exec tileserv_db sh -c 'ogr2ogr -progress -f PostgreSQL PG:"dbname=tileserv user=tileserv" /work/maryland.geojson -nln maryland' -echo "Data load complete"