Skip to content

alleveenstra/mapproxy-mapnik

Folders and files

NameName
Last commit message
Last commit date
Apr 16, 2016
Apr 16, 2016
Jun 29, 2016
Jun 29, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Apr 16, 2016
Jun 29, 2016
Apr 16, 2016

Repository files navigation

Docker container with Mapproxy and Mapnik on apache2

This container runs Apache 2 with Mapproxy and Mod_tile configured to working together. It requires a PostgreSQL database setup with openstreetmap data, the username "gis" and in a database named "gis". Tiles are rendered in gray tones, so they are suitable for usage as background maps.

This container has the following parameters:

  • Host "database", where the PostgreSQL database resides.
  • Port "80", where Apache 2 listens on.
  • Volume "/var/lib/mod_tile", where Mod_tile stores its cache.
  • Volume "/usr/local/mapproxy/cache_data", where Mapproxy stores its cache.

The following URLs are available:

Starting the container

docker run --add-host=database:192.168.0.1 -p 80:80 alleveenstra/mapproxy-mapnik

Setting up a database

This guide shows you how to setup a PostgreSQL database for usage with this container.

The first set is to install the required packages.

sudo apt-get install postgresql postgresql-contrib postgis wget docker.io osm2pgsql
sudo yum install epel-release
sudo yum install postgresql postgresql-server postgis docker boost -y

For CentOS fetch a osm2pgsql from https://www.rpmfind.net/linux/rpm2html/search.php?query=postgis and install it with:

rpm -i filename.rpm

Add the following to line to "/etc/postgresql/9.3/main/pg_hba.conf" on Ubuntu or "/var/lib/pgsql/data/pg_hba.conf" on CentOS. The IP range (172.17.0.1/24) should reflect your docker adapter range. You should look this up using: "ifconfig docker0".

host gis gis 172.17.0.1/24 trust
host gis gis 127.0.0.1/24 trust

Add the following to "/etc/postgresql/9.3/main/postgresql.conf" or "/var/lib/pgsql/data/postgresql.conf" on CentOS. Restart PostgreSQL using "service postgresql restart".

listen_addresses = '*'

Create a superuser called gis.

sudo -u postgres createuser gis -s

Create a database called gis.

sudo -u postgres createdb gis

Add the postgis extensions to database gis.

echo "create extension postgis" | psql --host 127.0.0.1 gis gis
echo "create extension postgis_topology" | psql --host 127.0.0.1 gis gis

Download the openstreetmap data.

wget http://download.geofabrik.de/europe/netherlands-latest.osm.pbf

Import the openstreetmap data into the database. Note that osm2pgsql has options to speed up an import.

osm2pgsql --slim --database gis --user gis --host 127.0.0.1 netherlands-latest.osm.pbf

Create local directories for the caches.

sudo mkdir -p /data/cache_data /data/mod_tile
sudo chown 33:33 /data/cache_data /data/mod_tile

Pull the container.

docker pull alleveenstra/mapproxy-mapnik

And run it.

docker run --add-host=database:172.17.42.1 \
           -v /data/mod_tile:/var/lib/mod_tile \
           -v /data/cache_data:/usr/local/mapproxy/cache_data \
           -p 80:80 -d alleveenstra/mapproxy-mapnik

When you experience error with the mount points, you might want to disabled selinux:

su -c "setenforce 0"