Files
2026-06-13 11:05:07 +02:00

62 lines
1.6 KiB
Bash

#!/bin/sh
set -eu
PBF_URL="${PBF_URL:-https://download.geofabrik.de/europe/germany-latest.osm.pbf}"
PBF_FILE="${PBF_FILE:-/osm/region.osm.pbf}"
PGHOST="${PGHOST:-postgis}"
PGPORT="${PGPORT:-5432}"
PGDATABASE="${PGDATABASE:-planner}"
PGUSER="${PGUSER:-planner}"
PGPASSWORD="${PGPASSWORD:-change-me}"
export PGPASSWORD
UPDATE_INTERVAL_SECONDS="${UPDATE_INTERVAL_SECONDS:-86400}"
echo "OSM importer starting..."
if [ ! -f "$PBF_FILE" ]; then
echo "Downloading initial extract from $PBF_URL"
wget -O "$PBF_FILE" "$PBF_URL"
fi
if ! psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" -tAc \
"SELECT 1 FROM pg_tables WHERE tablename = 'planet_osm_point'" | grep -q 1; then
echo "Initial osm2pgsql import..."
osm2pgsql \
--create \
--slim \
--database "$PGDATABASE" \
--host "$PGHOST" \
--port "$PGPORT" \
--username "$PGUSER" \
"$PBF_FILE"
else
echo "OSM tables already exist, skipping initial import."
fi
if ! psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" -tAc \
"SELECT 1 FROM pg_tables WHERE tablename = 'planet_osm_replication_status'" | grep -q 1; then
echo "Initializing replication..."
osm2pgsql-replication init \
--database "$PGDATABASE" \
--host "$PGHOST" \
--port "$PGPORT" \
--username "$PGUSER" \
--osm-file "$PBF_FILE"
else
echo "Replication already initialized."
fi
while true; do
echo "Running replication update..."
osm2pgsql-replication update \
--database "$PGDATABASE" \
--host "$PGHOST" \
--port "$PGPORT" \
--username "$PGUSER"
echo "Sleeping for $UPDATE_INTERVAL_SECONDS seconds..."
sleep "$UPDATE_INTERVAL_SECONDS"
done