Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ca1626a9fc | ||
|
101bb62e45 | ||
|
e249f30d40 | ||
|
6e5f4f485d | ||
|
ca4b1acb04 | ||
|
40ebaf7934 | ||
|
bfcc7d7c44 |
22
Dockerfile
22
Dockerfile
@@ -10,7 +10,10 @@ ENV UPDATES=disabled
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
# Install dependencies
|
||||
RUN echo "deb [ allow-insecure=yes ] http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" >> /etc/apt/sources.list.d/pgdg.list \
|
||||
RUN apt-get update \
|
||||
&& apt-get install wget gnupg2 lsb-core -y \
|
||||
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
|
||||
&& echo "deb [ trusted=yes ] http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y apt-transport-https ca-certificates \
|
||||
&& apt-get install -y --no-install-recommends --allow-unauthenticated \
|
||||
@@ -24,7 +27,9 @@ RUN echo "deb [ allow-insecure=yes ] http://apt.postgresql.org/pub/repos/apt/ bi
|
||||
fonts-noto-hinted \
|
||||
fonts-noto-unhinted \
|
||||
clang \
|
||||
gcc \
|
||||
gdal-bin \
|
||||
make \
|
||||
git-core \
|
||||
libagg-dev \
|
||||
libboost-all-dev \
|
||||
@@ -52,10 +57,9 @@ RUN echo "deb [ allow-insecure=yes ] http://apt.postgresql.org/pub/repos/apt/ bi
|
||||
nodejs \
|
||||
npm \
|
||||
postgis \
|
||||
postgresql-10 \
|
||||
postgresql-10-postgis-2.5 \
|
||||
postgresql-10-postgis-2.5-scripts \
|
||||
postgresql-contrib-10 \
|
||||
postgresql-12 \
|
||||
postgresql-server-dev-12 \
|
||||
postgresql-contrib-12 \
|
||||
protobuf-c-compiler \
|
||||
python-mapnik \
|
||||
sudo \
|
||||
@@ -72,6 +76,11 @@ RUN echo "deb [ allow-insecure=yes ] http://apt.postgresql.org/pub/repos/apt/ bi
|
||||
&& apt-get autoremove --yes \
|
||||
&& 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
|
||||
USER renderer
|
||||
@@ -109,7 +118,8 @@ USER renderer
|
||||
|
||||
# Configure stylesheet
|
||||
WORKDIR /home/renderer/src
|
||||
RUN git clone https://github.com/gravitystorm/openstreetmap-carto.git
|
||||
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
|
||||
|
4
Makefile
4
Makefile
@@ -8,5 +8,5 @@ push: build
|
||||
|
||||
test: build
|
||||
docker volume create openstreetmap-data
|
||||
docker run -v openstreetmap-data:/var/lib/postgresql/10/main overv/openstreetmap-tile-server import
|
||||
docker run -v openstreetmap-data:/var/lib/postgresql/10/main -p 80:80 -d overv/openstreetmap-tile-server run
|
||||
docker run -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server import
|
||||
docker run -v openstreetmap-data:/var/lib/postgresql/12/main -p 80:80 -d overv/openstreetmap-tile-server run
|
||||
|
28
README.md
28
README.md
@@ -13,7 +13,7 @@ Next, download an .osm.pbf extract from geofabrik.de for the region that you're
|
||||
```
|
||||
docker run \
|
||||
-v /absolute/path/to/luxembourg.osm.pbf:/data.osm.pbf \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
overv/openstreetmap-tile-server \
|
||||
import
|
||||
```
|
||||
@@ -28,7 +28,7 @@ If your import is an extract of the planet and has polygonal bounds associated w
|
||||
docker run \
|
||||
-v /absolute/path/to/luxembourg.osm.pbf:/data.osm.pbf \
|
||||
-v /absolute/path/to/luxembourg.poly:/data.poly \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
overv/openstreetmap-tile-server \
|
||||
import
|
||||
```
|
||||
@@ -42,7 +42,7 @@ Run the server like this:
|
||||
```
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
@@ -57,12 +57,14 @@ Tiles that have already been rendered will be stored in `/var/lib/mod_tile`. To
|
||||
docker volume create openstreetmap-rendered-tiles
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
|
||||
**If you do this, then make sure to also run the import with the `openstreetmap-rendered-tiles` volume to make sure that caching works properly across updates!**
|
||||
|
||||
### 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`:
|
||||
@@ -71,7 +73,7 @@ Given that you've specified both the OSM data and polygon as specified in the *A
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-e UPDATES=enabled \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
@@ -86,7 +88,7 @@ To enable the `Access-Control-Allow-Origin` header to be able to retrieve tiles
|
||||
```
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-e ALLOW_CORS=1 \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
@@ -100,7 +102,7 @@ To connect to the PostgreSQL database inside the container, make sure to expose
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-p 5432:5432 \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
@@ -118,7 +120,7 @@ docker run \
|
||||
-p 80:80 \
|
||||
-p 5432:5432 \
|
||||
-e PGPASSWORD=secret \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
@@ -134,7 +136,7 @@ The import and tile serving processes use 4 threads by default, but this number
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-e THREADS=24 \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
@@ -146,7 +148,7 @@ The import and tile serving processes use 800 MB RAM cache by default, but this
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-e "OSM2PGSQL_EXTRA_ARGS=-C 4096" \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
@@ -158,7 +160,7 @@ The database use the autovacuum feature by default. This behavior can be changed
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-e AUTOVACUUM=off \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
```
|
||||
@@ -171,7 +173,7 @@ If you are planning to import the entire planet or you are running into memory e
|
||||
docker run \
|
||||
-v /absolute/path/to/luxembourg.osm.pbf:/data.osm.pbf \
|
||||
-v openstreetmap-nodes:/nodes \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
-e "OSM2PGSQL_EXTRA_ARGS=--flat-nodes /nodes/flat_nodes.bin" \
|
||||
overv/openstreetmap-tile-server \
|
||||
import
|
||||
@@ -196,7 +198,7 @@ To raise it use `--shm-size` parameter. For example:
|
||||
```
|
||||
docker run \
|
||||
-p 80:80 \
|
||||
-v openstreetmap-data:/var/lib/postgresql/10/main \
|
||||
-v openstreetmap-data:/var/lib/postgresql/12/main \
|
||||
--shm-size="192m" \
|
||||
-d overv/openstreetmap-tile-server \
|
||||
run
|
||||
|
21
run.sh
21
run.sh
@@ -3,9 +3,9 @@
|
||||
set -x
|
||||
|
||||
function createPostgresConfig() {
|
||||
cp /etc/postgresql/10/main/postgresql.custom.conf.tmpl /etc/postgresql/10/main/postgresql.custom.conf
|
||||
sudo -u postgres echo "autovacuum = $AUTOVACUUM" >> /etc/postgresql/10/main/postgresql.custom.conf
|
||||
cat /etc/postgresql/10/main/postgresql.custom.conf
|
||||
cp /etc/postgresql/12/main/postgresql.custom.conf.tmpl /etc/postgresql/12/main/postgresql.custom.conf
|
||||
sudo -u postgres echo "autovacuum = $AUTOVACUUM" >> /etc/postgresql/12/main/postgresql.custom.conf
|
||||
cat /etc/postgresql/12/main/postgresql.custom.conf
|
||||
}
|
||||
|
||||
function setPostgresPassword() {
|
||||
@@ -61,6 +61,9 @@ if [ "$1" = "import" ]; then
|
||||
# Create indexes
|
||||
sudo -u postgres psql -d gis -f indexes.sql
|
||||
|
||||
# Register that data has changed for mod_tile caching purposes
|
||||
touch /var/lib/mod_tile/planet-import-complete
|
||||
|
||||
service postgresql stop
|
||||
|
||||
exit 0
|
||||
@@ -92,8 +95,16 @@ if [ "$1" = "run" ]; then
|
||||
/etc/init.d/cron start
|
||||
fi
|
||||
|
||||
# Run
|
||||
sudo -u renderer renderd -f -c /usr/local/etc/renderd.conf
|
||||
# Run while handling docker stop's SIGTERM
|
||||
stop_handler() {
|
||||
kill -TERM "$child"
|
||||
}
|
||||
trap stop_handler SIGTERM
|
||||
|
||||
sudo -u renderer renderd -f -c /usr/local/etc/renderd.conf &
|
||||
child=$!
|
||||
wait "$child"
|
||||
|
||||
service postgresql stop
|
||||
|
||||
exit 0
|
||||
|
Reference in New Issue
Block a user