diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..c0bfd35 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,64 @@ +services: + map: + image: overv/openstreetmap-tile-server + environment: + - UPDATES=enabled + - MAX_INTERVAL_SECONDS=600 + - REPLICATION_URL=https://planet.openstreetmap.org/replication/minute/ + # - DOWNLOAD_PBF=https://download.geofabrik.de/europe/dach-latest.osm.pbf + # - DOWNLOAD_POLY=https://download.geofabrik.de/europe/dach.poly + - THREADS=10 + - OSM2PGSQL_EXTRA_ARGS=-C 8196 + - FLAT_NODES=enabled + # deploy: + # replicas: 4 + - ALLOW_CORS=enabled + - TILESIZE=512 + volumes: + - osm-data:/data/database/ + - osm-tiles:/data/tiles/ + - ./run.sh:/run.sh + # ports: + # - "8080:80" + command: "run" + shm_size: 2g + networks: + - traefik + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik-docker_default" + - "traefik.http.routers.openstreetmap-tile-server.rule=Host(`${VIRTUAL_HOST}`)" + - "traefik.http.routers.openstreetmap-tile-server.entrypoints=websecure" + - "traefik.http.routers.openstreetmap-tile-server.tls.certresolver=letsencrypt" + - "traefik.http.services.openstreetmap-tile-server.loadbalancer.server.port=80" + - "traefik.http.routers.openstreetmap-tile-server.tls=true" + + import: + image: overv/openstreetmap-tile-server + environment: + - UPDATES=enabled + - MAX_INTERVAL_SECONDS=600 + - REPLICATION_URL=https://planet.openstreetmap.org/replication/minute/ + - DOWNLOAD_PBF=https://download.geofabrik.de/europe/dach-latest.osm.pbf + - DOWNLOAD_POLY=https://download.geofabrik.de/europe/dach.poly + - THREADS=10 + - FLAT_NODES=enabled + - OSM2PGSQL_EXTRA_ARGS=-C 8196 + dns: 1.1.1.1 + volumes: + - osm-data:/data/database/ + - osm-tiles:/data/tiles/ + command: "import" + shm_size: 2g + +volumes: + osm-tiles: + external: true + osm-data: + external: true + +networks: + traefik: + external: true + name: traefik-docker_default + diff --git a/postgresql.custom.conf.tmpl b/postgresql.custom.conf.tmpl index 40cdedd..ee1f4cc 100644 --- a/postgresql.custom.conf.tmpl +++ b/postgresql.custom.conf.tmpl @@ -1,7 +1,7 @@ # Suggested minimal settings from # https://ircama.github.io/osm-carto-tutorials/tile-server-ubuntu/ -shared_buffers = 128MB +shared_buffers = 1GB min_wal_size = 1GB # max_wal_size = 2GB # Overridden below maintenance_work_mem = 256MB @@ -16,10 +16,14 @@ wal_buffers = 1024kB wal_writer_delay = 500ms commit_delay = 10000 # checkpoint_segments = 60 # unrecognized in psql 10.7.1 -max_wal_size = 2880MB +max_wal_size = 5GB random_page_cost = 1.1 track_activity_query_size = 16384 autovacuum_vacuum_scale_factor = 0.05 autovacuum_analyze_scale_factor = 0.02 +checkpoint_timeout = 60min +wal_level = minimal +max_wal_senders = 0 + listen_addresses = '*' diff --git a/run.sh b/run.sh index ddd9af9..ef7a81f 100755 --- a/run.sh +++ b/run.sh @@ -169,6 +169,7 @@ if [ "$1" == "run" ]; then # Configure renderd threads sed -i -E "s/num_threads=[0-9]+/num_threads=${THREADS:-4}/g" /etc/renderd.conf + sed -i -E "s/TILESIZE=[0-9]+/TILESIZE=${TILESIZE:-256}/g" /etc/renderd.conf # start cron job to trigger consecutive updates if [ "${UPDATES:-}" == "enabled" ] || [ "${UPDATES:-}" == "1" ]; then @@ -197,3 +198,5 @@ fi echo "invalid command" exit 1 + +