Compare commits

..

88 Commits

Author SHA1 Message Date
Alexander Overvoorde
a1cbf0d74c Add proper error checking to run script 2021-12-11 15:39:36 +01:00
Alexander Overvoorde
705237446a Fix update script no longer working (fixes #222) 2021-11-08 22:18:47 +01:00
Stjepan Cvitanovic
1e684edb6a Added E flag (#217)
Added -E flag to use the set up environment.
2021-10-11 22:22:17 +02:00
galewis2
4b93ca3e52 Make the image smaller (#214)
* Update Dockerfile

* Add comment

* rm debs after install

* Get ready for buildkit

* Update Dockerfile

* Cleanup indenting

* Update Dockerfile

* Update Dockerfile

* Install certificates required for downloads

Co-authored-by: Alexander Overvoorde <overv161@gmail.com>
2021-10-11 22:15:44 +02:00
Andrey Prih
0a4d079b08 fix naciscdn.org (#212)
* fix naciscdn.org

* fix

Co-authored-by: prih <prih@prihhost.com>
2021-09-07 21:39:35 +02:00
Alexander Overvoorde
60ac7657d1 Don't clutter output of usage instructions 2021-09-03 12:51:45 +02:00
Alexander Overvoorde
ce176ae32e Fix erroneous quotes around WGET_ARGS (fixes #210) 2021-09-03 12:46:37 +02:00
Alexander Overvoorde
7b82bcae9d Use indexes.sql included with openstreetmap-carto instead of own copy (fixes #204) (#205) 2021-07-19 22:05:18 +02:00
Jason Montleon
85eaca5c79 Install python-is-python3 for openstreetmap-tiles-update-expire (#201) 2021-07-03 15:28:40 +02:00
Alexander Overvoorde
9679b29b50 Update NodeJS to 14 LTS (#185) 2021-05-13 14:44:24 +02:00
ruhepuls
8f2c575ad6 Carto 5.3.1 integrated (#183) 2021-05-13 14:41:01 +02:00
Alexander Overvoorde
75e7714f20 Merge pull request #168 from Overv/ubuntu-20.04
Upgrade to Ubuntu 20.04
2021-03-07 16:34:51 +01:00
Alexander Overvoorde
ec500a2cde Upgrade to Ubuntu 20.04 2021-03-07 16:34:21 +01:00
Alexander Overvoorde
affae5a92d Merge pull request #169 from mhajder/feature/update-components
Update PostGIS, OpenStreetMap Carto stylesheet and trim_osc.py helper
2021-03-01 21:47:13 +01:00
Mateusz Hajder
a204fb85fd Update PostGIS, OpenStreetMap Carto stylesheet and trim_osc.py helper 2021-02-21 15:37:07 +01:00
Alexander Overvoorde
7636079b4d Merge pull request #164 from jdmonin/readme-switch-url-moved 2021-02-10 21:09:28 +01:00
Jeremy D Monin
2ae828c52b Dockerfile: Update same switch2osm.org url as readme 2021-02-07 15:56:36 -05:00
Jeremy D Monin
6fb62935f3 README: Update link to switch2osm.org tile server guide 2021-02-06 16:20:46 -05:00
Alexander Overvoorde
953232051f Show progress output for wget by default (fixes #156) 2020-10-27 20:55:02 +01:00
Alexander Overvoorde
bedff2a880 Merge pull request #150 from ph1ll/patch-1
Fix Osmosis configuration change
2020-09-17 21:40:58 +02:00
Ph1ll
e79901b7dd Fix Osmosis configuration change 2020-09-16 10:05:33 +01:00
Alexander Overvoorde
5a059ab0a5 Merge pull request #140 from Floyddotnet/master
small improvement of build time and image size
2020-06-03 18:46:28 +02:00
Peter Becker
bcf2cfcada combine several apt install calls 2020-06-03 09:24:05 +00:00
Peter Becker
0e1db36457 fix shallow fetch for osm2pgsql and mod-tile 2020-06-03 09:24:05 +00:00
Peter Becker
677b52468e execute all make calls in parallel 2020-06-03 09:23:54 +00:00
Alexander Overvoorde
1093734e1b Merge branch 'Mou97-master' 2020-06-01 14:12:30 +02:00
Alexander Overvoorde
9fb0743c51 Fix shallow fetch for openstreetmap-carto 2020-06-01 14:11:52 +02:00
Mou97
19cb75baa4 removed git command thats fetches the whole history after a shallow clone 2020-05-31 01:21:42 +01:00
Mou97
82bc6a35a3 renamed Dockerfile-badInternet to Dockerfile 2020-05-29 18:58:57 +01:00
Mou97
44490df8c5 added a dockerfile version to avoid 'connection closed: RPC failed' error when cloning big repos 2020-05-29 14:23:36 +01:00
Alexander Overvoorde
6dc84f1d26 Merge pull request #135 from Istador/patch-1 2020-05-15 18:50:46 +02:00
Robin C. Ladiges
26a4b9f239 OSM2PGSQL_EXTRA_ARGS inside quotes
This commit fixes issue #133.
2020-05-15 16:24:01 +02:00
Alexander Overvoorde
2754592d1c Rearrange OSM2PGSQL_EXTRA_ARGS to allow overriding of existing parameters (fixes #112) 2020-04-26 19:00:59 +02:00
Alexander Overvoorde
e838310073 Merge pull request #119 from Sohalt/master
Use https everywhere and remove `--allow-unauthenticated`
2020-04-07 21:26:36 +02:00
sohalt
cca2d00a78 Remove --allow-unauthenticated 2020-04-07 04:30:10 +02:00
sohalt
cc5b50b050 http -> https 2020-04-07 04:29:18 +02:00
Alexander Overvoorde
d8f2fc14e4 Merge pull request #116 from atychang/master
Fix font_dir of mapnik
2020-04-02 20:44:53 +02:00
Allen Chang
1b437e143f Fix font_dir of mapnik
OpenType fonts (OTF) are located in `/usr/share/fonts/opentype`,
however, the font_dir of mapnik is `/usr/share/fonts/truetype` and
mapnik is support OTF, it will cause mapnik can't find the OTFs
(OTFs are used by openstreetmap-carto, e.g., Noto CJK JP).
2020-04-02 13:28:24 +08:00
Alexander Overvoorde
acedcce53d Improve consistency of parameter naming and document PBF/POLY download parameters 2020-02-20 20:29:14 +01:00
Alexander Overvoorde
e15dee4665 Merge pull request #105 from skydiablo/master
allow external PBF file with auto-downloader
2020-02-20 20:18:05 +01:00
Volker von Hoesslin
83f26e1abe fix indent 2020-02-20 08:46:46 +01:00
Alexander Overvoorde
5a1b2a6b06 Add support for host mounts (fixes #94) 2020-02-19 21:04:24 +01:00
Volker von Hoesslin
6d0e8070f5 fix bash syntax 2020-02-19 12:01:17 +01:00
Volker von Hoesslin
2a69c977c9 allow external PBF file with auto-downloader 2020-02-14 11:59:27 +01:00
Alexander Overvoorde
5300472417 Accept both the values enabled and 1 for boolean flags for backwards compatibility 2020-02-12 20:18:19 +01:00
Alexander Overvoorde
f9a29fb23b Merge pull request #104 from darekzbik/cors_property
fix configuration values inconsistency
2020-02-12 20:18:06 +01:00
Dariusz Zbik
52c89b4775 fix configuration values inconsistency 2020-02-10 22:24:34 +01:00
Alexander Overvoorde
0bb62b77d3 Merge pull request #101 from pandel/master
Get nodejs from source because of apt package conflict
2020-02-10 22:09:50 +01:00
Holger Pandel
0a5ac2a018 Get nodejs from source 2020-02-09 21:13:22 +01:00
Alexander Overvoorde
f0f36a6c9b Merge pull request #99 from irexiz/master
Remove unnecessary shapefile archives to reduce final image size
2020-02-04 19:58:55 +01:00
irekzagan
b192fabac3 remove unnecessary shapefile archives 2020-01-23 16:25:24 +01:00
Alexander Overvoorde
f2971fa97e Fix badge URL some more and change badge layout 2019-12-27 15:07:05 +01:00
Alexander Overvoorde
0d789b883d Fix Docker badge URL and update ports in test code 2019-12-27 15:04:21 +01:00
Alexander Overvoorde
99484a505b Update Travis config 2019-12-27 14:58:56 +01:00
Alexander Overvoorde
ac609febcc Merge pull request #98 from Gjacquenot/master
Add CI for openstreetmap-tile-server
2019-12-27 14:52:46 +01:00
Guillaume Jacquenot
dafb4610cd 🐛 Fixed removed symbolic link 2019-12-25 21:49:31 +01:00
Guillaume Jacquenot
a90f8f1d8c 🔧 Updated .travis.yml 2019-12-24 00:02:49 +01:00
Guillaume Jacquenot
515dd2a18c 🔧 Updated .travis.yml 2019-12-23 23:36:30 +01:00
Guillaume Jacquenot
18c97f52bf 🔨 Updated .travis.yml 2019-12-23 23:10:33 +01:00
Guillaume Jacquenot
e9a26ddded 🔨 Updated .travis.yml 2019-12-23 22:47:53 +01:00
Guillaume Jacquenot
d0428523b5 🔧 Switched from postgis-3.0.0rc2 to postgis-3.0.0 2019-12-23 22:08:41 +01:00
Guillaume Jacquenot
4ca2e8f1e5 🔧 Removed build directory /home/renderer/src/osm2pgsql 2019-12-23 22:07:06 +01:00
Guillaume Jacquenot
17a2c6d631 🔧 Removed boost libraries 2019-12-23 21:51:41 +01:00
Guillaume Jacquenot
d7922429f3 Added badges in main Readme.md 2019-12-23 21:38:20 +01:00
Guillaume Jacquenot
837a38df04 🐛 Fixed remove directory /home/renderer/src 2019-12-23 21:38:20 +01:00
Guillaume Jacquenot
f69bcd2540 🔨 Switched from python-mapnik -> python3-mapnik 2019-12-23 21:38:20 +01:00
Guillaume Jacquenot
f77c926ee5 🔧 Tag docker image so that it can be pushed to dockerhub 2019-12-23 21:38:20 +01:00
Guillaume Jacquenot
bae840f240 🔧 Added sleep command before we stop everything 2019-12-23 21:38:20 +01:00
Guillaume Jacquenot
e0f7438dab 🔨 Updated Makefile 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
637e821888 🔨 Removed .git directory 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
e8e95c6001 🔨 Refactored Dockerfile 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
d8ccc2c026 🔧 Removed clang 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
b71e7a6aba 🔨 Refactored regional instruction 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
62a972736a 🔨 Updated user command 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
f9f1047400 📝 Updated .travis.yml 2019-12-23 21:35:45 +01:00
Guillaume Jacquenot
fa4b0eba0b 📝 Typo update 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
69cb804609 📝 Typo update 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
efc2cb1e2a 🔨 Refactored PosgtreSQL install 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
6de21a4595 🔨 Refactored PosgtreSQL install 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
868d2fae0a 🔨 Refactored openstreetmap-carto install 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
0527120c30 🔨 Refactored mod_tile install 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
8bac516eb1 🔨 Refactored osm2pgsql install 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
c8a79a19e4 🔨 Refactored PostGIS install 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
92708df534 🔨 Reorder ubuntu packages 2019-12-22 21:01:18 +01:00
Guillaume Jacquenot
879e5f25ab Create .travis.yml 2019-12-22 21:01:18 +01:00
Alexander Overvoorde
010f87d711 Change example server port to 8080 and include Docker Compose example 2019-12-22 13:53:12 +01:00
Alexander Overvoorde
789ff772be Change custom config to be overridable 2019-12-05 21:27:46 +01:00
Alexander Overvoorde
64c66a7d0b Make setup for automatic updates optional through UPDATES variable 2019-11-07 21:12:29 +01:00
8 changed files with 315 additions and 244 deletions

28
.travis.yml Normal file
View File

@@ -0,0 +1,28 @@
os: linux
language: minimal
services:
- docker
# DOCKER_USERNAME/DOCKER_PASSWORD have been configured in Travis CI
# env:
before_install:
- echo "Before install"
before_script:
- docker pull overv/openstreetmap-tile-server || true
script:
- docker build --pull --cache-from overv/openstreetmap-tile-server --tag overv/openstreetmap-tile-server .
- docker volume create openstreetmap-data
- docker run --rm -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server import
- docker run --rm -v openstreetmap-data:/var/lib/postgresql/12/main -p 8080:80 -d overv/openstreetmap-tile-server run
- sleep 30
- make DOCKER_IMAGE=overv/openstreetmap-tile-server stop
after_script:
- docker images
after_success:
- if [[ "$TRAVIS_BRANCH" == "master" ]];
then
docker images ;
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin ;
docker push overv/openstreetmap-tile-server ;
fi
notifications:
email: true

View File

@@ -1,184 +1,214 @@
FROM ubuntu:18.04 FROM ubuntu:20.04 AS compiler-common
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git-core \
checkinstall \
g++ \
make \
tar \
wget \
ca-certificates
###########################################################################################################
FROM compiler-common AS compiler-postgis
RUN apt-get install -y --no-install-recommends \
postgresql-server-dev-12 \
libxml2-dev \
libgeos-dev \
libproj-dev
RUN wget https://download.osgeo.org/postgis/source/postgis-3.1.1.tar.gz -O postgis.tar.gz \
&& mkdir -p postgis_src \
&& tar -xvzf postgis.tar.gz --strip 1 -C postgis_src \
&& rm postgis.tar.gz \
&& cd postgis_src \
&& ./configure --without-protobuf --without-raster \
&& make -j $(nproc) \
&& checkinstall --pkgversion="3.1.1" --install=no --default make install
###########################################################################################################
FROM compiler-common AS compiler-osm2pgsql
RUN apt-get install -y --no-install-recommends \
cmake \
libboost-dev \
libboost-system-dev \
libboost-filesystem-dev \
libexpat1-dev \
zlib1g-dev \
libbz2-dev \
libpq-dev \
libproj-dev \
lua5.3 \
liblua5.3-dev \
pandoc
RUN cd ~ \
&& git clone -b master --single-branch https://github.com/openstreetmap/osm2pgsql.git --depth 1 \
&& cd osm2pgsql \
&& mkdir build \
&& cd build \
&& cmake .. \
&& make -j $(nproc) \
&& checkinstall --pkgversion="1" --install=no --default make install
###########################################################################################################
FROM compiler-common AS compiler-modtile-renderd
RUN apt-get install -y --no-install-recommends \
apache2-dev \
automake \
autoconf \
autotools-dev \
libtool \
libmapnik-dev
RUN cd ~ \
&& git clone -b switch2osm --single-branch https://github.com/SomeoneElseOSM/mod_tile.git --depth 1 \
&& cd mod_tile \
&& ./autogen.sh \
&& ./configure \
&& make -j $(nproc) \
&& checkinstall --pkgversion="1" --install=no --pkgname "renderd" --default make install \
&& checkinstall --pkgversion="1" --install=no --pkgname "mod_tile" --default make install-mod_tile
###########################################################################################################
FROM compiler-common AS compiler-stylesheet
RUN apt-get install -y --no-install-recommends \
npm
RUN cd ~ \
&& git clone --single-branch --branch v5.3.1 https://github.com/gravitystorm/openstreetmap-carto.git --depth 1 \
&& cd openstreetmap-carto \
&& sed -ie 's#https:\/\/naciscdn.org\/naturalearth\/110m\/cultural\/ne_110m_admin_0_boundary_lines_land.zip#https:\/\/naturalearth.s3.amazonaws.com\/110m_cultural\/ne_110m_admin_0_boundary_lines_land.zip#g' external-data.yml \
&& npm install -g carto@0.18.2 \
&& carto project.mml > mapnik.xml
###########################################################################################################
FROM compiler-common AS compiler-helper-script
RUN mkdir -p /home/renderer/src \
&& cd /home/renderer/src \
&& git clone https://github.com/zverik/regional \
&& cd regional \
&& git checkout 889d630a1e1a1bacabdd1dad6e17b49e7d58cd4b \
&& rm -rf .git \
&& chmod u+x /home/renderer/src/regional/trim_osc.py
###########################################################################################################
FROM ubuntu:20.04 AS final-base
# Based on # Based on
# https://switch2osm.org/manually-building-a-tile-server-18-04-lts/ # https://switch2osm.org/serving-tiles/manually-building-a-tile-server-18-04-lts/
ENV DEBIAN_FRONTEND=noninteractive
# Set up environment
ENV TZ=UTC
ENV AUTOVACUUM=on ENV AUTOVACUUM=on
ENV UPDATES=disabled ENV UPDATES=disabled
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Install dependencies # Get packages
RUN apt-get update \ RUN apt-get update \
&& apt-get install wget gnupg2 lsb-core -y \ && apt-get install -y --no-install-recommends \
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ apache2 \
&& echo "deb [ trusted=yes ] http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \ cron \
&& apt-get update \ fonts-noto-cjk \
&& apt-get install -y apt-transport-https ca-certificates \ fonts-noto-hinted \
&& apt-get install -y --no-install-recommends --allow-unauthenticated \ fonts-noto-unhinted \
apache2 \ gdal-bin \
apache2-dev \ liblua5.3-dev \
autoconf \ lua5.3 \
build-essential \ mapnik-utils \
bzip2 \ osmium-tool \
cmake \ osmosis \
fonts-noto-cjk \ postgresql-12 \
fonts-noto-hinted \ python-is-python3 \
fonts-noto-unhinted \ python3-mapnik \
clang \ python3-lxml \
gcc \ python3-psycopg2 \
gdal-bin \ python3-shapely \
make \ python3-pip \
git-core \ sudo \
libagg-dev \ ttf-unifont \
libboost-all-dev \ wget \
libbz2-dev \
libcairo-dev \
libcairomm-1.0-dev \
libexpat1-dev \
libfreetype6-dev \
libgdal-dev \
libgeos++-dev \
libgeos-dev \
libgeotiff-epsg \
libicu-dev \
liblua5.3-dev \
libmapnik-dev \
libpq-dev \
libproj-dev \
libprotobuf-c0-dev \
libtiff5-dev \
libtool \
libxml2-dev \
lua5.3 \
make \
mapnik-utils \
nodejs \
npm \
postgis \
postgresql-12 \
postgresql-server-dev-12 \
postgresql-contrib-12 \
protobuf-c-compiler \
python-mapnik \
sudo \
tar \
ttf-unifont \
unzip \
wget \
zlib1g-dev \
osmosis \
osmium-tool \
cron \
python3-psycopg2 python3-shapely python3-lxml \
&& apt-get clean autoclean \ && apt-get clean autoclean \
&& apt-get autoremove --yes \ && apt-get autoremove --yes \
&& rm -rf /var/lib/{apt,dpkg,cache,log}/ && rm -rf /var/lib/{apt,dpkg,cache,log}/
# Set up PostGIS
RUN wget http://download.osgeo.org/postgis/source/postgis-3.0.0rc2.tar.gz
RUN tar -xvzf postgis-3.0.0rc2.tar.gz
RUN cd postgis-3.0.0rc2 && ./configure && make && make install
# Set up renderer user
RUN adduser --disabled-password --gecos "" renderer RUN adduser --disabled-password --gecos "" renderer
USER renderer
# Install latest osm2pgsql # Install python libraries
RUN mkdir /home/renderer/src RUN pip3 install \
WORKDIR /home/renderer/src requests \
RUN git clone https://github.com/openstreetmap/osm2pgsql.git pyyaml
WORKDIR /home/renderer/src/osm2pgsql
RUN mkdir build
WORKDIR /home/renderer/src/osm2pgsql/build
RUN cmake .. \
&& make -j $(nproc)
USER root
RUN make install
RUN mkdir /nodes \
&& chown renderer:renderer /nodes
USER renderer
# Install and test Mapnik
RUN python -c 'import mapnik'
# Install mod_tile and renderd
WORKDIR /home/renderer/src
RUN git clone -b switch2osm https://github.com/SomeoneElseOSM/mod_tile.git
WORKDIR /home/renderer/src/mod_tile
RUN ./autogen.sh \
&& ./configure \
&& make -j $(nproc)
USER root
RUN make -j $(nproc) install \
&& make -j $(nproc) install-mod_tile \
&& ldconfig
USER renderer
# Configure stylesheet
WORKDIR /home/renderer/src
RUN git clone https://github.com/gravitystorm/openstreetmap-carto.git \
&& git -C openstreetmap-carto checkout v4.23.0
WORKDIR /home/renderer/src/openstreetmap-carto
USER root
RUN npm install -g carto@0.18.2
USER renderer
RUN carto project.mml > mapnik.xml
# Load shapefiles
WORKDIR /home/renderer/src/openstreetmap-carto
RUN scripts/get-shapefiles.py
# Configure renderd
USER root
RUN sed -i 's/renderaccount/renderer/g' /usr/local/etc/renderd.conf \
&& sed -i 's/hot/tile/g' /usr/local/etc/renderd.conf
USER renderer
# Configure Apache # Configure Apache
USER root
RUN mkdir /var/lib/mod_tile \ RUN mkdir /var/lib/mod_tile \
&& chown renderer /var/lib/mod_tile \ && chown renderer /var/lib/mod_tile \
&& mkdir /var/run/renderd \ && mkdir /var/run/renderd \
&& chown renderer /var/run/renderd && chown renderer /var/run/renderd \
RUN echo "LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so" >> /etc/apache2/conf-available/mod_tile.conf \ && echo "LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so" >> /etc/apache2/conf-available/mod_tile.conf \
&& echo "LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so" >> /etc/apache2/conf-available/mod_headers.conf \ && echo "LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so" >> /etc/apache2/conf-available/mod_headers.conf \
&& a2enconf mod_tile && a2enconf mod_headers && a2enconf mod_tile && a2enconf mod_headers
COPY apache.conf /etc/apache2/sites-available/000-default.conf COPY apache.conf /etc/apache2/sites-available/000-default.conf
COPY leaflet-demo.html /var/www/html/index.html COPY leaflet-demo.html /var/www/html/index.html
RUN ln -sf /dev/stdout /var/log/apache2/access.log \ RUN ln -sf /dev/stdout /var/log/apache2/access.log \
&& ln -sf /dev/stderr /var/log/apache2/error.log && ln -sf /dev/stderr /var/log/apache2/error.log
# Copy update scripts
COPY openstreetmap-tiles-update-expire /usr/bin/
RUN chmod +x /usr/bin/openstreetmap-tiles-update-expire \
&& mkdir /var/log/tiles \
&& chmod a+rw /var/log/tiles \
&& ln -s /home/renderer/src/mod_tile/osmosis-db_replag /usr/bin/osmosis-db_replag \
&& echo "* * * * * renderer openstreetmap-tiles-update-expire\n" >> /etc/crontab
RUN mkdir /nodes \
&& chown renderer:renderer /nodes
# Configure PosgtreSQL # Configure PosgtreSQL
COPY postgresql.custom.conf.tmpl /etc/postgresql/12/main/ COPY postgresql.custom.conf.tmpl /etc/postgresql/12/main/
RUN chown -R postgres:postgres /var/lib/postgresql \ RUN chown -R postgres:postgres /var/lib/postgresql \
&& chown postgres:postgres /etc/postgresql/12/main/postgresql.custom.conf.tmpl \ && chown postgres:postgres /etc/postgresql/12/main/postgresql.custom.conf.tmpl \
&& echo "\ninclude 'postgresql.custom.conf'" >> /etc/postgresql/12/main/postgresql.conf && echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/12/main/pg_hba.conf \
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/12/main/pg_hba.conf \ && echo "host all all ::/0 md5" >> /etc/postgresql/12/main/pg_hba.conf
&& echo "host all all ::/0 md5" >> /etc/postgresql/12/main/pg_hba.conf
# copy update scripts ###########################################################################################################
COPY openstreetmap-tiles-update-expire /usr/bin/
RUN chmod +x /usr/bin/openstreetmap-tiles-update-expire \
&& mkdir /var/log/tiles \
&& chmod a+rw /var/log/tiles \
&& ln -s /home/renderer/src/mod_tile/osmosis-db_replag /usr/bin/osmosis-db_replag \
&& echo "* * * * * renderer openstreetmap-tiles-update-expire\n" >> /etc/crontab
# install trim_osc.py helper script FROM final-base AS final
USER renderer
RUN cd ~/src \ # Install PostGIS
&& git clone https://github.com/zverik/regional \ COPY --from=compiler-postgis postgis_src/postgis-src_3.1.1-1_amd64.deb .
&& cd regional \ RUN dpkg -i postgis-src_3.1.1-1_amd64.deb \
&& git checkout 612fe3e040d8bb70d2ab3b133f3b2cfc6c940520 \ && rm postgis-src_3.1.1-1_amd64.deb
&& chmod u+x ~/src/regional/trim_osc.py
# Install osm2pgsql
COPY --from=compiler-osm2pgsql /root/osm2pgsql/build/build_1-1_amd64.deb .
RUN dpkg -i build_1-1_amd64.deb \
&& rm build_1-1_amd64.deb
# Install renderd
COPY --from=compiler-modtile-renderd /root/mod_tile/renderd_1-1_amd64.deb .
RUN dpkg -i renderd_1-1_amd64.deb \
&& rm renderd_1-1_amd64.deb \
&& sed -i 's/renderaccount/renderer/g' /usr/local/etc/renderd.conf \
&& sed -i 's/\/truetype//g' /usr/local/etc/renderd.conf \
&& sed -i 's/hot/tile/g' /usr/local/etc/renderd.conf
# Install mod_tile
COPY --from=compiler-modtile-renderd /root/mod_tile/mod-tile_1-1_amd64.deb .
RUN dpkg -i mod-tile_1-1_amd64.deb \
&& ldconfig \
&& rm mod-tile_1-1_amd64.deb
COPY --from=compiler-modtile-renderd /root/mod_tile/osmosis-db_replag /usr/bin/osmosis-db_replag
# Install stylesheet
COPY --from=compiler-stylesheet /root/openstreetmap-carto /home/renderer/src/openstreetmap-carto
# Install helper script
COPY --from=compiler-helper-script /home/renderer/src/regional /home/renderer/src/regional
# Start running # Start running
USER root
COPY run.sh / COPY run.sh /
COPY indexes.sql /
ENTRYPOINT ["/run.sh"] ENTRYPOINT ["/run.sh"]
CMD [] CMD []
EXPOSE 80 5432 EXPOSE 80 5432

View File

@@ -1,12 +1,18 @@
.PHONY: build push test .PHONY: build push test
DOCKER_IMAGE=overv/openstreetmap-tile-server
build: build:
docker build -t overv/openstreetmap-tile-server . docker build -t ${DOCKER_IMAGE} .
push: build push: build
docker push overv/openstreetmap-tile-server:latest docker push ${DOCKER_IMAGE}:latest
test: build test: build
docker volume create openstreetmap-data docker volume create openstreetmap-data
docker run -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server import docker run --rm -v openstreetmap-data:/var/lib/postgresql/12/main ${DOCKER_IMAGE} import
docker run -v openstreetmap-data:/var/lib/postgresql/12/main -p 80:80 -d overv/openstreetmap-tile-server run docker run --rm -v openstreetmap-data:/var/lib/postgresql/12/main -p 8080:80 -d ${DOCKER_IMAGE} run
stop:
docker rm -f `docker ps | grep '${DOCKER_IMAGE}' | awk '{ print $$1 }'` || true
docker volume rm -f openstreetmap-data

View File

@@ -1,6 +1,8 @@
# openstreetmap-tile-server # openstreetmap-tile-server
This container allows you to easily set up an OpenStreetMap PNG tile server given a `.osm.pbf` file. It is based on the [latest Ubuntu 18.04 LTS guide](https://switch2osm.org/manually-building-a-tile-server-18-04-lts/) from [switch2osm.org](https://switch2osm.org/) and therefore uses the default OpenStreetMap style. [![Build Status](https://travis-ci.org/Overv/openstreetmap-tile-server.svg?branch=master)](https://travis-ci.org/Overv/openstreetmap-tile-server) [![](https://images.microbadger.com/badges/image/overv/openstreetmap-tile-server.svg)](https://microbadger.com/images/overv/openstreetmap-tile-server "openstreetmap-tile-server")
This container allows you to easily set up an OpenStreetMap PNG tile server given a `.osm.pbf` file. It is based on the [latest Ubuntu 18.04 LTS guide](https://switch2osm.org/serving-tiles/manually-building-a-tile-server-18-04-lts/) from [switch2osm.org](https://switch2osm.org/) and therefore uses the default OpenStreetMap style.
## Setting up the server ## Setting up the server
@@ -22,10 +24,11 @@ If the container exits without errors, then your data has been successfully impo
### Automatic updates (optional) ### Automatic updates (optional)
If your import is an extract of the planet and has polygonal bounds associated with it, like those from geofabrik.de, then it is possible to set your server up for automatic updates. Make sure to reference both the OSM file and the polygon file during the import process to facilitate this: If your import is an extract of the planet and has polygonal bounds associated with it, like those from geofabrik.de, then it is possible to set your server up for automatic updates. Make sure to reference both the OSM file and the polygon file during the import process to facilitate this, and also include the `UPDATES=enabled` variable:
``` ```
docker run \ docker run \
-e UPDATES=enabled \
-v /absolute/path/to/luxembourg.osm.pbf:/data.osm.pbf \ -v /absolute/path/to/luxembourg.osm.pbf:/data.osm.pbf \
-v /absolute/path/to/luxembourg.poly:/data.poly \ -v /absolute/path/to/luxembourg.poly:/data.poly \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
@@ -33,7 +36,20 @@ docker run \
import import
``` ```
Refer to the section *Automatic updating and tile expiry* to actually enable the updates. Refer to the section *Automatic updating and tile expiry* to actually enable the updates while running the tile server.
### Letting the container download the file
It is also possible to let the container download files for you rather than mounting them in advance by using the `DOWNLOAD_PBF` and `DOWNLOAD_POLY` parameters:
```
docker run \
-e DOWNLOAD_PBF=https://download.geofabrik.de/europe/luxembourg-latest.osm.pbf \
-e DOWNLOAD_POLY=https://download.geofabrik.de/europe/luxembourg.poly \
-v openstreetmap-data:/var/lib/postgresql/12/main \
overv/openstreetmap-tile-server \
import
```
## Running the server ## Running the server
@@ -41,13 +57,17 @@ Run the server like this:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
run run
``` ```
Your tiles will now be available at `http://localhost:80/tile/{z}/{x}/{y}.png`. The demo map in `leaflet-demo.html` will then be available on `http://localhost:80`. Note that it will initially take quite a bit of time to render the larger tiles for the first time. Your tiles will now be available at `http://localhost:8080/tile/{z}/{x}/{y}.png`. The demo map in `leaflet-demo.html` will then be available on `http://localhost:8080`. Note that it will initially take quite a bit of time to render the larger tiles for the first time.
### Using Docker Compose
The `docker-compose.yml` file included with this repository shows how the aforementioned command can be used with Docker Compose to run your server.
### Preserving rendered tiles ### Preserving rendered tiles
@@ -56,7 +76,7 @@ Tiles that have already been rendered will be stored in `/var/lib/mod_tile`. To
``` ```
docker volume create openstreetmap-rendered-tiles docker volume create openstreetmap-rendered-tiles
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \ -v openstreetmap-rendered-tiles:/var/lib/mod_tile \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
@@ -67,11 +87,11 @@ docker run \
### Enabling automatic updating (optional) ### Enabling automatic updating (optional)
Given that you've specified both the OSM data and polygon as specified in the *Automatic updates* section during server setup, you can enable the updating process by setting the variable `UPDATES` to `enabled`: Given that you've set up your import as described in the *Automatic updates* section during server setup, you can enable the updating process by setting the `UPDATES` variable while running your server as well:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-e UPDATES=enabled \ -e UPDATES=enabled \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \ -v openstreetmap-rendered-tiles:/var/lib/mod_tile \
@@ -83,13 +103,13 @@ This will enable a background process that automatically downloads changes from
### Cross-origin resource sharing ### Cross-origin resource sharing
To enable the `Access-Control-Allow-Origin` header to be able to retrieve tiles from other domains, simply set the `ALLOW_CORS` variable to `1`: To enable the `Access-Control-Allow-Origin` header to be able to retrieve tiles from other domains, simply set the `ALLOW_CORS` variable to `enabled`:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-e ALLOW_CORS=1 \ -e ALLOW_CORS=enabled \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
run run
``` ```
@@ -100,7 +120,7 @@ To connect to the PostgreSQL database inside the container, make sure to expose
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-p 5432:5432 \ -p 5432:5432 \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
@@ -117,7 +137,7 @@ The default password is `renderer`, but it can be changed using the `PGPASSWORD`
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-p 5432:5432 \ -p 5432:5432 \
-e PGPASSWORD=secret \ -e PGPASSWORD=secret \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
@@ -134,7 +154,7 @@ Details for update procedure and invoked scripts can be found here [link](https:
The import and tile serving processes use 4 threads by default, but this number can be changed by setting the `THREADS` environment variable. For example: The import and tile serving processes use 4 threads by default, but this number can be changed by setting the `THREADS` environment variable. For example:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-e THREADS=24 \ -e THREADS=24 \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
@@ -146,7 +166,7 @@ docker run \
The import and tile serving processes use 800 MB RAM cache by default, but this number can be changed by option -C. For example: The import and tile serving processes use 800 MB RAM cache by default, but this number can be changed by option -C. For example:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-e "OSM2PGSQL_EXTRA_ARGS=-C 4096" \ -e "OSM2PGSQL_EXTRA_ARGS=-C 4096" \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
@@ -158,7 +178,7 @@ docker run \
The database use the autovacuum feature by default. This behavior can be changed with `AUTOVACUUM` environment variable. For example: The database use the autovacuum feature by default. This behavior can be changed with `AUTOVACUUM` environment variable. For example:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-e AUTOVACUUM=off \ -e AUTOVACUUM=off \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
@@ -197,7 +217,7 @@ renderd[121]: reason: Postgis Plugin: ERROR: could not resize shared memory segm
To raise it use `--shm-size` parameter. For example: To raise it use `--shm-size` parameter. For example:
``` ```
docker run \ docker run \
-p 80:80 \ -p 8080:80 \
-v openstreetmap-data:/var/lib/postgresql/12/main \ -v openstreetmap-data:/var/lib/postgresql/12/main \
--shm-size="192m" \ --shm-size="192m" \
-d overv/openstreetmap-tile-server \ -d overv/openstreetmap-tile-server \
@@ -218,7 +238,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,

14
docker-compose.yml Normal file
View File

@@ -0,0 +1,14 @@
version: '3'
services:
map:
image: overv/openstreetmap-tile-server
volumes:
- openstreetmap-data:/var/lib/postgresql/12/main
ports:
- "8080:80"
command: "run"
volumes:
openstreetmap-data:
external: true

View File

@@ -1,48 +0,0 @@
-- Extracted from https://github.com/gravitystorm/openstreetmap-carto
-- Comes with a CC0 license
-- These are optional but suggested indexes for rendering OpenStreetMap Carto
-- with a full planet database.
-- This file is generated with scripts/indexes.py
CREATE INDEX planet_osm_roads_admin
ON planet_osm_roads USING GIST (way)
WHERE boundary = 'administrative';
CREATE INDEX planet_osm_roads_roads_ref
ON planet_osm_roads USING GIST (way)
WHERE highway IS NOT NULL AND ref IS NOT NULL;
CREATE INDEX planet_osm_roads_admin_low
ON planet_osm_roads USING GIST (way)
WHERE boundary = 'administrative' AND admin_level IN ('0', '1', '2', '3', '4');
CREATE INDEX planet_osm_line_ferry
ON planet_osm_line USING GIST (way)
WHERE route = 'ferry';
CREATE INDEX planet_osm_line_river
ON planet_osm_line USING GIST (way)
WHERE waterway = 'river';
CREATE INDEX planet_osm_line_name
ON planet_osm_line USING GIST (way)
WHERE name IS NOT NULL;
CREATE INDEX planet_osm_polygon_water
ON planet_osm_polygon USING GIST (way)
WHERE waterway IN ('dock', 'riverbank', 'canal')
OR landuse IN ('reservoir', 'basin')
OR "natural" IN ('water', 'glacier');
CREATE INDEX planet_osm_polygon_nobuilding
ON planet_osm_polygon USING GIST (way)
WHERE building IS NULL;
CREATE INDEX planet_osm_polygon_name
ON planet_osm_polygon USING GIST (way)
WHERE name IS NOT NULL;
CREATE INDEX planet_osm_polygon_way_area_z10
ON planet_osm_polygon USING GIST (way)
WHERE way_area > 23300;
CREATE INDEX planet_osm_polygon_military
ON planet_osm_polygon USING GIST (way)
WHERE (landuse = 'military' OR military = 'danger_area') AND building IS NULL;
CREATE INDEX planet_osm_polygon_way_area_z6
ON planet_osm_polygon USING GIST (way)
WHERE way_area > 5980000;
CREATE INDEX planet_osm_point_place
ON planet_osm_point USING GIST (way)
WHERE place IS NOT NULL AND name IS NOT NULL;

View File

@@ -7,9 +7,7 @@ set -e
# and other things directly from this script when run from cron. # and other things directly from this script when run from cron.
# Change the actual location to wherever installed locally. # Change the actual location to wherever installed locally.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
export PATH=.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ACCOUNT=renderer ACCOUNT=renderer
cd /home/$ACCOUNT/src/mod_tile/
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Extra OSM2PGSQL_OPTIONS may need setting if a tag transform script is # Extra OSM2PGSQL_OPTIONS may need setting if a tag transform script is
@@ -22,7 +20,7 @@ OSM2PGSQL_BIN=osm2pgsql
TRIM_BIN=/home/$ACCOUNT/src/regional/trim_osc.py TRIM_BIN=/home/$ACCOUNT/src/regional/trim_osc.py
DBNAME=gis DBNAME=gis
OSM2PGSQL_OPTIONS="-d $DBNAME -G --hstore ${OSM2PGSQL_EXTRA_ARGS} --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style" OSM2PGSQL_OPTIONS="-d $DBNAME -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style ${OSM2PGSQL_EXTRA_ARGS}"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# When using trim_osc.py we can define either a bounding box (such as this # When using trim_osc.py we can define either a bounding box (such as this
@@ -111,7 +109,7 @@ if [ $# -eq 1 ] ; then
m_info "Initialising Osmosis replication system to $1" m_info "Initialising Osmosis replication system to $1"
mkdir $WORKOSM_DIR mkdir $WORKOSM_DIR
$OSMOSIS_BIN --read-replication-interval-init workingDirectory=$WORKOSM_DIR 1>&2 2> "$OSMOSISLOG" $OSMOSIS_BIN --read-replication-interval-init workingDirectory=$WORKOSM_DIR 1>&2 2> "$OSMOSISLOG"
wget "http://replicate-sequences.osm.mazdermind.de/?"$1"T00:00:00Z" -O $WORKOSM_DIR/state.txt wget "https://replicate-sequences.osm.mazdermind.de/?"$1"T00:00:00Z" -O $WORKOSM_DIR/state.txt
mv $WORKOSM_DIR/configuration.txt $WORKOSM_DIR/configuration_orig.txt mv $WORKOSM_DIR/configuration.txt $WORKOSM_DIR/configuration_orig.txt
sed "s!baseUrl=http://planet.openstreetmap.org/replication/minute!baseUrl=https://planet.openstreetmap.org/replication/minute!" $WORKOSM_DIR/configuration_orig.txt > $WORKOSM_DIR/configuration.txt sed "s!baseUrl=http://planet.openstreetmap.org/replication/minute!baseUrl=https://planet.openstreetmap.org/replication/minute!" $WORKOSM_DIR/configuration_orig.txt > $WORKOSM_DIR/configuration.txt
else else

57
run.sh
View File

@@ -1,11 +1,11 @@
#!/bin/bash #!/bin/bash
set -x set -euo pipefail
function createPostgresConfig() { function createPostgresConfig() {
cp /etc/postgresql/12/main/postgresql.custom.conf.tmpl /etc/postgresql/12/main/postgresql.custom.conf cp /etc/postgresql/12/main/postgresql.custom.conf.tmpl /etc/postgresql/12/main/conf.d/postgresql.custom.conf
sudo -u postgres echo "autovacuum = $AUTOVACUUM" >> /etc/postgresql/12/main/postgresql.custom.conf sudo -u postgres echo "autovacuum = $AUTOVACUUM" >> /etc/postgresql/12/main/conf.d/postgresql.custom.conf
cat /etc/postgresql/12/main/postgresql.custom.conf cat /etc/postgresql/12/main/conf.d/postgresql.custom.conf
} }
function setPostgresPassword() { function setPostgresPassword() {
@@ -23,7 +23,15 @@ if [ "$#" -ne 1 ]; then
exit 1 exit 1
fi fi
set -x
if [ "$1" = "import" ]; then if [ "$1" = "import" ]; then
# Ensure that database directory is in right state
chown postgres:postgres -R /var/lib/postgresql
if [ ! -f /var/lib/postgresql/12/main/PG_VERSION ]; then
sudo -u postgres /usr/lib/postgresql/12/bin/pg_ctl -D /var/lib/postgresql/12/main/ initdb -o "--locale C.UTF-8"
fi
# Initialize PostgreSQL # Initialize PostgreSQL
createPostgresConfig createPostgresConfig
service postgresql start service postgresql start
@@ -36,19 +44,30 @@ if [ "$1" = "import" ]; then
setPostgresPassword setPostgresPassword
# Download Luxembourg as sample if no data is provided # Download Luxembourg as sample if no data is provided
if [ ! -f /data.osm.pbf ]; then if [ ! -f /data.osm.pbf ] && [ -z "${DOWNLOAD_PBF:-}" ]; then
echo "WARNING: No import file at /data.osm.pbf, so importing Luxembourg as example..." echo "WARNING: No import file at /data.osm.pbf, so importing Luxembourg as example..."
wget -nv http://download.geofabrik.de/europe/luxembourg-latest.osm.pbf -O /data.osm.pbf DOWNLOAD_PBF="https://download.geofabrik.de/europe/luxembourg-latest.osm.pbf"
wget -nv http://download.geofabrik.de/europe/luxembourg.poly -O /data.poly DOWNLOAD_POLY="https://download.geofabrik.de/europe/luxembourg.poly"
fi fi
# determine and set osmosis_replication_timestamp (for consecutive updates) if [ -n "${DOWNLOAD_PBF:-}" ]; then
osmium fileinfo /data.osm.pbf > /var/lib/mod_tile/data.osm.pbf.info echo "INFO: Download PBF file: $DOWNLOAD_PBF"
osmium fileinfo /data.osm.pbf | grep 'osmosis_replication_timestamp=' | cut -b35-44 > /var/lib/mod_tile/replication_timestamp.txt wget ${WGET_ARGS:-} "$DOWNLOAD_PBF" -O /data.osm.pbf
REPLICATION_TIMESTAMP=$(cat /var/lib/mod_tile/replication_timestamp.txt) if [ -n "$DOWNLOAD_POLY" ]; then
echo "INFO: Download PBF-POLY file: $DOWNLOAD_POLY"
wget ${WGET_ARGS:-} "$DOWNLOAD_POLY" -O /data.poly
fi
fi
# initial setup of osmosis workspace (for consecutive updates) if [ "${UPDATES:-}" = "enabled" ]; then
sudo -u renderer openstreetmap-tiles-update-expire $REPLICATION_TIMESTAMP # determine and set osmosis_replication_timestamp (for consecutive updates)
osmium fileinfo /data.osm.pbf > /var/lib/mod_tile/data.osm.pbf.info
osmium fileinfo /data.osm.pbf | grep 'osmosis_replication_timestamp=' | cut -b35-44 > /var/lib/mod_tile/replication_timestamp.txt
REPLICATION_TIMESTAMP=$(cat /var/lib/mod_tile/replication_timestamp.txt)
# initial setup of osmosis workspace (for consecutive updates)
sudo -u renderer openstreetmap-tiles-update-expire $REPLICATION_TIMESTAMP
fi
# copy polygon file if available # copy polygon file if available
if [ -f /data.poly ]; then if [ -f /data.poly ]; then
@@ -56,10 +75,14 @@ if [ "$1" = "import" ]; then
fi fi
# Import data # Import data
sudo -u renderer osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} ${OSM2PGSQL_EXTRA_ARGS} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style /data.osm.pbf sudo -u renderer osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style /data.osm.pbf ${OSM2PGSQL_EXTRA_ARGS:-}
# Create indexes # Create indexes
sudo -u postgres psql -d gis -f indexes.sql sudo -u postgres psql -d gis -f /home/renderer/src/openstreetmap-carto/indexes.sql
#Import external data
sudo chown -R renderer: /home/renderer/src
sudo -E -u renderer python3 /home/renderer/src/openstreetmap-carto/scripts/get-external-data.py -c /home/renderer/src/openstreetmap-carto/external-data.yml -D /home/renderer/src/openstreetmap-carto/data
# Register that data has changed for mod_tile caching purposes # Register that data has changed for mod_tile caching purposes
touch /var/lib/mod_tile/planet-import-complete touch /var/lib/mod_tile/planet-import-complete
@@ -77,7 +100,7 @@ if [ "$1" = "run" ]; then
chown postgres:postgres /var/lib/postgresql -R chown postgres:postgres /var/lib/postgresql -R
# Configure Apache CORS # Configure Apache CORS
if [ "$ALLOW_CORS" == "1" ]; then if [ "${ALLOW_CORS:-}" == "enabled" ] || [ "${ALLOW_CORS:-}" == "1" ]; then
echo "export APACHE_ARGUMENTS='-D ALLOW_CORS'" >> /etc/apache2/envvars echo "export APACHE_ARGUMENTS='-D ALLOW_CORS'" >> /etc/apache2/envvars
fi fi
@@ -91,7 +114,7 @@ if [ "$1" = "run" ]; then
sed -i -E "s/num_threads=[0-9]+/num_threads=${THREADS:-4}/g" /usr/local/etc/renderd.conf sed -i -E "s/num_threads=[0-9]+/num_threads=${THREADS:-4}/g" /usr/local/etc/renderd.conf
# start cron job to trigger consecutive updates # start cron job to trigger consecutive updates
if [ "$UPDATES" = "enabled" ]; then if [ "${UPDATES:-}" = "enabled" ] || [ "${UPDATES:-}" = "1" ]; then
/etc/init.d/cron start /etc/init.d/cron start
fi fi