From 0aa7607d7b64e0cfbbcb2ce84050b59f2e0ae9a6 Mon Sep 17 00:00:00 2001 From: Hummeltech <6109326+hummeltech@users.noreply.github.com> Date: Fri, 8 Mar 2024 15:38:46 -0700 Subject: [PATCH] Updates to "full" Docker containers (#404) * To help with testing rendering with real data and styles --- docker/.env | 4 ++ docker/.gitignore | 3 + docker/archlinux/Dockerfile | 18 ++++-- docker/centos/7/Dockerfile | 10 +-- docker/centos/stream/Dockerfile | 10 +-- docker/centos/stream/Dockerfile.autotools | 10 +-- docker/centos/stream/Dockerfile.mapnik-latest | 10 +-- docker/debian/Dockerfile | 10 +-- docker/debian/Dockerfile.autotools | 10 +-- docker/docker-compose.yml | 61 +++++++++++++++---- docker/fedora/Dockerfile | 10 +-- docker/full-entrypoint.sh | 51 ++++++++++++++++ docker/opensuse/Dockerfile | 10 +-- docker/ubuntu/Dockerfile | 14 +++-- docker/ubuntu/Dockerfile.autotools | 10 +-- docker/ubuntu/entrypoint.sh | 61 ------------------- includes/store_null.h | 2 - src/store_null.c | 9 +-- utils/example-map/index.html | 2 +- 19 files changed, 177 insertions(+), 138 deletions(-) create mode 100644 docker/.gitignore create mode 100755 docker/full-entrypoint.sh delete mode 100755 docker/ubuntu/entrypoint.sh diff --git a/docker/.env b/docker/.env index c975ea6..b61f87d 100644 --- a/docker/.env +++ b/docker/.env @@ -1 +1,5 @@ COMPOSE_PROJECT_NAME=mod_tile +DOWNLOAD_PBF=https://download.geofabrik.de/europe/germany/nordrhein-westfalen/koeln-regbez-latest.osm.pbf +PGDATABASE=gis +PGHOST=postgres +PGUSER=renderer diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000..1dc9d84 --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1,3 @@ +data +fonts +styles diff --git a/docker/archlinux/Dockerfile b/docker/archlinux/Dockerfile index 4c5d2cd..087470c 100644 --- a/docker/archlinux/Dockerfile +++ b/docker/archlinux/Dockerfile @@ -1,3 +1,6 @@ +# Arguments +ARG runner_additional_packages + # Builder FROM archlinux:latest as builder @@ -41,10 +44,13 @@ RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \ # Runner FROM archlinux:latest as runner +## Arguments +ARG runner_additional_packages + ## Install runner dependencies RUN --mount=id=archlinux:latest-/var/cache/pacman/pkg,sharing=locked,target=/var/cache/pacman/pkg,type=cache \ --mount=id=archlinux:latest-/var/lib/pacman/sync,sharing=locked,target=/var/lib/pacman/sync,type=cache \ - pacman --sync --refresh --sysupgrade --noconfirm \ + pacman --sync --refresh --sysupgrade --noconfirm ${runner_additional_packages} \ apache \ cairo \ curl \ @@ -77,11 +83,11 @@ COPY --from=builder \ /etc/httpd/conf/extra/httpd-tile-renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Enable module & site RUN printf '\nInclude conf/extra/httpd-tile.conf\n' >> /etc/httpd/conf/httpd.conf && \ diff --git a/docker/centos/7/Dockerfile b/docker/centos/7/Dockerfile index b861b08..b4a69fa 100644 --- a/docker/centos/7/Dockerfile +++ b/docker/centos/7/Dockerfile @@ -164,11 +164,11 @@ COPY --from=builder \ /etc/httpd/conf.d/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Start services CMD httpd -e debug -k start; \ diff --git a/docker/centos/stream/Dockerfile b/docker/centos/stream/Dockerfile index f05b4e2..717f3f0 100644 --- a/docker/centos/stream/Dockerfile +++ b/docker/centos/stream/Dockerfile @@ -185,11 +185,11 @@ COPY --from=builder \ /etc/httpd/conf.d/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Start services CMD httpd -e debug -k start; \ diff --git a/docker/centos/stream/Dockerfile.autotools b/docker/centos/stream/Dockerfile.autotools index 141de38..78732c9 100644 --- a/docker/centos/stream/Dockerfile.autotools +++ b/docker/centos/stream/Dockerfile.autotools @@ -189,11 +189,11 @@ RUN sed \ ## Add configuration RUN printf "LoadModule tile_module $(find /usr -name mod_tile.so)\n" > /etc/httpd/conf.modules.d/11-tile.conf -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Create missing directories RUN mkdir --parents /run/renderd /var/cache/renderd/tiles diff --git a/docker/centos/stream/Dockerfile.mapnik-latest b/docker/centos/stream/Dockerfile.mapnik-latest index 7cd9cd0..30a3b26 100644 --- a/docker/centos/stream/Dockerfile.mapnik-latest +++ b/docker/centos/stream/Dockerfile.mapnik-latest @@ -170,11 +170,11 @@ COPY --from=builder \ /etc/httpd/conf.d/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Start services CMD httpd -e debug -k start; \ diff --git a/docker/debian/Dockerfile b/docker/debian/Dockerfile index 08bbc53..3351a62 100644 --- a/docker/debian/Dockerfile +++ b/docker/debian/Dockerfile @@ -79,11 +79,11 @@ COPY --from=builder \ /etc/apache2/sites-available/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Enable module & site RUN a2enmod tile && \ diff --git a/docker/debian/Dockerfile.autotools b/docker/debian/Dockerfile.autotools index 21b689a..e90dd39 100644 --- a/docker/debian/Dockerfile.autotools +++ b/docker/debian/Dockerfile.autotools @@ -79,11 +79,11 @@ RUN sed \ ## Add configuration RUN printf "LoadModule tile_module $(find /usr -name mod_tile.so)\n" > /etc/apache2/mods-available/tile.load -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Create missing directories RUN mkdir --parents /run/renderd /var/cache/renderd/tiles diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 653e855..aa3f2de 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -30,6 +30,32 @@ services: build: <<: *build_defaults dockerfile: docker/archlinux/Dockerfile + archlinux-full: + <<: *service_defaults + build: + <<: *build_defaults + args: + runner_additional_packages: >- + curl + gdal + git + npm + osm2pgsql + postgresql + python-psycopg2 + python-pyaml + unzip + dockerfile: docker/archlinux/Dockerfile + depends_on: + postgres: + condition: service_healthy + entrypoint: /entrypoint.sh + volumes: + - tiles:/var/cache/renderd/tiles + - ./archlinux/data:/opt/data + - ./archlinux/fonts:/opt/fonts + - ./archlinux/styles:/opt/styles + - ./full-entrypoint.sh:/entrypoint.sh:ro centos-7: <<: *service_defaults build: @@ -241,25 +267,35 @@ services: <<: *build_defaults_ubuntu args: libmapnik_version: "3.1" + runner_additional_packages: >- + curl + gdal-bin + git + npm + osm2pgsql + postgresql-client + python3-psycopg2 + python3-yaml + unzip ubuntu_version: "devel" depends_on: - - postgres + postgres: + condition: service_healthy entrypoint: /entrypoint.sh - environment: - DOWNLOAD_PBF: http://download.geofabrik.de/africa/eritrea-latest.osm.pbf - PGDATABASE: gis - PGHOST: postgres - PGUSER: renderer volumes: - - data:/data - - tile_data:/var/cache/renderd/tiles - - ./ubuntu/entrypoint.sh:/entrypoint.sh:ro + - tiles:/var/cache/renderd/tiles + - ./full-entrypoint.sh:/entrypoint.sh:ro + - ./ubuntu/data:/opt/data + - ./ubuntu/fonts:/opt/fonts + - ./ubuntu/styles:/opt/styles postgres: env_file: .env environment: - POSTGRES_DB: gis + POSTGRES_DB: ${PGDATABASE} POSTGRES_HOST_AUTH_METHOD: trust - POSTGRES_USER: renderer + POSTGRES_USER: ${PGUSER} + healthcheck: + test: ["CMD", "psql", "--quiet", "--list"] image: postgis/postgis ports: - 65432:5432 @@ -268,6 +304,5 @@ services: shm_size: 1gb volumes: - data: pgdata: - tile_data: + tiles: diff --git a/docker/fedora/Dockerfile b/docker/fedora/Dockerfile index d7cf43e..49ad83b 100644 --- a/docker/fedora/Dockerfile +++ b/docker/fedora/Dockerfile @@ -70,11 +70,11 @@ COPY --from=builder \ /etc/httpd/conf.d/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Start services CMD httpd -e debug -k start; \ diff --git a/docker/full-entrypoint.sh b/docker/full-entrypoint.sh new file mode 100755 index 0000000..05e24f7 --- /dev/null +++ b/docker/full-entrypoint.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env sh + +if [ ! -f /opt/styles/mapnik.xml ] +then + git clone https://github.com/gravitystorm/openstreetmap-carto.git --depth 1 /opt/openstreetmap-carto + + cp --archive /opt/openstreetmap-carto/patterns /opt/openstreetmap-carto/symbols /opt/styles/ + + python3 /opt/openstreetmap-carto/scripts/get-external-data.py --cache --config /opt/openstreetmap-carto/external-data.yml --data /opt/data + + cd /opt && /opt/openstreetmap-carto/scripts/get-fonts.sh && cd - + + psql --command "CREATE EXTENSION postgis;" --dbname "${PGDATABASE}" --host "${PGHOST}" --user "${PGUSER}" + psql --command "CREATE EXTENSION hstore;" --dbname "${PGDATABASE}" --host "${PGHOST}" --user "${PGUSER}" + psql --command "ALTER TABLE geometry_columns OWNER TO ${PGUSER};" --dbname "${PGDATABASE}" --host "${PGHOST}" --user "${PGUSER}" + psql --command "ALTER TABLE spatial_ref_sys OWNER TO ${PGUSER};" --dbname "${PGDATABASE}" --host "${PGHOST}" --user "${PGUSER}" + + if [ ! -f /opt/data/region.osm.pbf ] + then + curl --location "${DOWNLOAD_PBF:-http://download.geofabrik.de/asia/vietnam-latest.osm.pbf}" --output /opt/data/region.osm.pbf + fi + + osm2pgsql \ + --create \ + --database "${PGDATABASE}" \ + --host "${PGHOST}" \ + --hstore \ + --number-processes "$(nproc)" \ + --slim \ + --tag-transform-script /opt/openstreetmap-carto/openstreetmap-carto.lua \ + --user "${PGUSER}" \ + -G \ + -S /opt/openstreetmap-carto/openstreetmap-carto.style \ + /opt/data/region.osm.pbf + + psql --dbname "${PGDATABASE}" --file /opt/openstreetmap-carto/indexes.sql --host "${PGHOST}" --user "${PGUSER}" + + npm install --global carto + carto /opt/openstreetmap-carto/project.mml > /opt/styles/mapnik.xml + + chmod --recursive 777 /opt/* +fi + +sed -i \ + -e 's#/usr/share/renderd/example-map/mapnik.xml#/opt/styles/mapnik.xml#g' \ + -e 's/pid_file=/num_threads=-1\npid_file=/g' \ + -e 's#font_dir=.*#font_dir=/opt/fonts#g' \ + /etc/renderd.conf + +apachectl -e debug -k start +renderd --foreground diff --git a/docker/opensuse/Dockerfile b/docker/opensuse/Dockerfile index 93c95f4..7b77715 100644 --- a/docker/opensuse/Dockerfile +++ b/docker/opensuse/Dockerfile @@ -165,11 +165,11 @@ COPY --from=builder \ /etc/apache2/conf.d/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Enable `mod_access_compat` RUN sed -i 's/^APACHE_MODULES="actions/APACHE_MODULES="access_compat actions/g' /etc/sysconfig/apache2 diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile index 9dd55aa..1a30df1 100644 --- a/docker/ubuntu/Dockerfile +++ b/docker/ubuntu/Dockerfile @@ -1,5 +1,6 @@ # Arguments ARG libmapnik_version=3.1 +ARG runner_additional_packages ARG ubuntu_version=22.04 # Builder @@ -49,6 +50,7 @@ FROM ubuntu:${ubuntu_version} as runner ## Arguments ARG libmapnik_version +ARG runner_additional_packages ARG ubuntu_version ## Install runner dependencies @@ -57,7 +59,7 @@ RUN --mount=id=ubuntu:${ubuntu_version}-/var/cache/apt,sharing=locked,target=/va export DEBIAN_FRONTEND=noninteractive && \ apt-get --yes update && \ apt-get --yes upgrade && \ - apt-get --no-install-recommends --yes install \ + apt-get --no-install-recommends --yes install ${runner_additional_packages} \ apache2 \ libcairo2 \ libcurl4 \ @@ -78,11 +80,11 @@ COPY --from=builder \ /etc/apache2/sites-available/renderd-example-map.conf ## Add configuration -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Enable module & site RUN a2enmod tile && \ diff --git a/docker/ubuntu/Dockerfile.autotools b/docker/ubuntu/Dockerfile.autotools index 6367b76..235043b 100644 --- a/docker/ubuntu/Dockerfile.autotools +++ b/docker/ubuntu/Dockerfile.autotools @@ -79,11 +79,11 @@ RUN sed \ ## Add configuration RUN printf "LoadModule tile_module $(find /usr -name mod_tile.so)\n" > /etc/apache2/mods-available/tile.load -RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf -RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf +RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf ## Create missing directories RUN mkdir --parents /run/renderd /var/cache/renderd/tiles diff --git a/docker/ubuntu/entrypoint.sh b/docker/ubuntu/entrypoint.sh deleted file mode 100755 index 330acaa..0000000 --- a/docker/ubuntu/entrypoint.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env sh - -if [ ! -f /data/style/mapnik.xml ] -then - export DEBIAN_FRONTEND=noninteractive - - apt-get --yes update - - apt-get --no-install-recommends --yes install \ - curl \ - gdal-bin \ - git \ - node-carto \ - osm2pgsql \ - postgresql-client \ - python3-yaml \ - unzip - - git clone https://github.com/gravitystorm/openstreetmap-carto.git --depth 1 /data/style - - cd /data/style - - python3 scripts/get-external-data.py -c /data/style/external-data.yml -D /data/style/data - - scripts/get-fonts.sh - - psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "CREATE EXTENSION postgis;" - psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "CREATE EXTENSION hstore;" - psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "ALTER TABLE geometry_columns OWNER TO ${PGUSER};" - psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "ALTER TABLE spatial_ref_sys OWNER TO ${PGUSER};" - - curl --location "${DOWNLOAD_PBF:-http://download.geofabrik.de/asia/vietnam-latest.osm.pbf}" --output /data/region.osm.pbf - - osm2pgsql \ - --create \ - --database "${PGDATABASE}" \ - --host "${PGHOST}" \ - --hstore \ - --number-processes "$(nproc)" \ - --slim \ - --tag-transform-script /data/style/openstreetmap-carto.lua \ - --user "${PGUSER}" \ - -G \ - -S /data/style/openstreetmap-carto.style \ - /data/region.osm.pbf - - psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --file /data/style/indexes.sql - - carto /data/style/project.mml > /data/style/mapnik.xml - sed \ - -e 's#/usr/share/renderd/example-map/mapnik.xml#/data/style/mapnik.xml#g' \ - -e 's/URI=/MAXZOOM=20\nMINZOOM=0\nURI=/g' \ - -e 's#font_dir=/usr/share/fonts#font_dir=/data/style/fonts#g' \ - /etc/renderd.conf > /data/renderd.conf -fi - -sed -i 's#/etc/renderd.conf#/data/renderd.conf#g' /etc/apache2/sites-enabled/renderd-example-map.conf -sed -i 's/maxZoom: 12/maxZoom: 20/g' /usr/share/renderd/example-map/index.html - -apachectl -e debug -k start -renderd --config /data/renderd.conf --foreground diff --git a/includes/store_null.h b/includes/store_null.h index 023842d..4d663df 100644 --- a/includes/store_null.h +++ b/includes/store_null.h @@ -22,8 +22,6 @@ extern "C" { #endif -#include "store.h" - struct storage_backend *init_storage_null(); #ifdef __cplusplus diff --git a/src/store_null.c b/src/store_null.c index f3e81f7..1d8730c 100644 --- a/src/store_null.c +++ b/src/store_null.c @@ -15,13 +15,14 @@ * along with this program; If not, see http://www.gnu.org/licenses/. */ -#include "store_null.h" -#include -#include -#include +#include #include +#include +#include #include "g_logger.h" +#include "store.h" +#include "store_null.h" static int tile_read(struct storage_backend * store, const char *xmlconfig, diff --git a/utils/example-map/index.html b/utils/example-map/index.html index e5aa3ae..16faf34 100644 --- a/utils/example-map/index.html +++ b/utils/example-map/index.html @@ -16,7 +16,7 @@ var attribution = 'Map data © OpenStreetMap contributors.'; var options = { - maxZoom: 12, + maxZoom: 20, attribution: attribution, };