initial commit
This commit is contained in:
commit
546c010369
50
Dockerfile
Normal file
50
Dockerfile
Normal file
@ -0,0 +1,50 @@
|
||||
FROM ubuntu:xenial
|
||||
|
||||
LABEL andreimagic <andreidragulescu@gmail.com>
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV LANG C.UTF-8
|
||||
|
||||
RUN apt-get -y update -qq && \
|
||||
apt-get -y install locales && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \
|
||||
libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\
|
||||
libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev \
|
||||
postgresql-server-dev-9.5 postgresql-9.5-postgis-2.2 postgresql-contrib-9.5 \
|
||||
apache2 php php-pgsql libapache2-mod-php php-pear php-db \
|
||||
php-intl git curl sudo \
|
||||
python-pip libboost-python-dev \
|
||||
osmosis && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
rm -rf /tmp/* /var/tmp/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Configure postgres
|
||||
RUN echo "host all all 0.0.0.0/0 trust" >> /etc/postgresql/9.5/main/pg_hba.conf && \
|
||||
echo "listen_addresses='*'" >> /etc/postgresql/9.5/main/postgresql.conf
|
||||
|
||||
# Nominatim install
|
||||
ENV NOMINATIM_VERSION v3.1.0
|
||||
RUN git clone --recursive https://github.com/openstreetmap/Nominatim ./src
|
||||
RUN cd ./src && git checkout tags/$NOMINATIM_VERSION && git submodule update --recursive --init && \
|
||||
mkdir build && cd build && cmake .. && make
|
||||
|
||||
# Osmium install to run continuous updates
|
||||
RUN pip install osmium
|
||||
|
||||
# Apache configure
|
||||
COPY local.php /app/src/build/settings/local.php
|
||||
COPY nominatim.conf /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
# Load initial data
|
||||
RUN curl http://www.nominatim.org/data/country_grid.sql.gz > /app/src/data/country_osm_grid.sql.gz
|
||||
|
||||
EXPOSE 5432
|
||||
EXPOSE 8080
|
||||
|
||||
COPY start.sh /app/start.sh
|
||||
COPY init.sh /app/init.sh
|
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
||||
# Nominatim Docker (Nominatim version 3.1)
|
||||
|
||||
1. Build
|
||||
```
|
||||
docker build -t nominatim .
|
||||
```
|
||||
2. Copy <your_country>.osm.pbf to a local directory (i.e. /home/docker-volumes/nominatimdata)
|
||||
|
||||
3. Initialize Nominatim Database
|
||||
```
|
||||
docker run -t -v /home/docker-volumes/nominatimdata:/data nominatim sh /app/init.sh /data/merged.osm.pbf postgresdata 4
|
||||
```
|
||||
Where 4 is the number of threads to use during import, set this according to the host.
|
||||
You can delete the `/home/docker-volumes/nominatimdata/merged.osm.pbf` once the import is finished.
|
||||
|
||||
4. After the import is finished the `/home/docker-volumes/nominatimdata/postgresdata` folder will contain the full postgress binaries of a postgis/nominatim database.
|
||||
Start the nominatim as a single node is the following:
|
||||
```
|
||||
docker run --restart=always -p 7070:8080 -d -v /home/docker-volumes/nominatimdata/postgresdata:/var/lib/postgresql/9.5/main nominatim sh /app/start.sh
|
||||
```
|
||||
|
||||
At this stage all database files are stored on the host and the containers are considered disposable.
|
23
init.sh
Normal file
23
init.sh
Normal file
@ -0,0 +1,23 @@
|
||||
OSMFILE=$1
|
||||
PGDIR=$2
|
||||
THREADS=$3
|
||||
|
||||
mkdir -p /data/$PGDIR && \
|
||||
|
||||
chown postgres:postgres /data/$PGDIR && \
|
||||
|
||||
export PGDATA=/data/$PGDIR && \
|
||||
sudo -u postgres /usr/lib/postgresql/9.5/bin/initdb -D /data/$PGDIR && \
|
||||
sudo -u postgres /usr/lib/postgresql/9.5/bin/pg_ctl -D /data/$PGDIR start && \
|
||||
sudo -u postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='nominatim'" | grep -q 1 || sudo -u postgres createuser -s nominatim && \
|
||||
sudo -u postgres psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='www-data'" | grep -q 1 || sudo -u postgres createuser -SDR www-data && \
|
||||
sudo -u postgres psql postgres -c "DROP DATABASE IF EXISTS nominatim" && \
|
||||
useradd -m -p password1234 nominatim && \
|
||||
chown -R nominatim:nominatim ./src && \
|
||||
sudo -u nominatim ./src/build/utils/setup.php --osm-file $OSMFILE --all --threads $THREADS && \
|
||||
sudo -u nominatim ./src/build/utils/specialphrases.php --wiki-import > specialphrases.sql && \
|
||||
sudo -u postgres psql -d nominatim -f specialphrases.sql && \
|
||||
sudo -u postgres psql postgres -tAc "CREATE INDEX nodes_index ON public.planet_osm_ways USING gin (nodes);"
|
||||
|
||||
sudo -u postgres /usr/lib/postgresql/9.5/bin/pg_ctl -D /data/$PGDIR stop && \
|
||||
sudo chown -R postgres:postgres /data/$PGDIR
|
12
local.php
Normal file
12
local.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
// Paths
|
||||
@define('CONST_Postgresql_Version', '9.5');
|
||||
@define('CONST_Postgis_Version', '2.2');
|
||||
// Website settings
|
||||
@define('CONST_Website_BaseURL', '/nominatim/');
|
||||
@define('CONST_Replication_Url', 'http://download.geofabrik.de/europe/monaco-updates');
|
||||
@define('CONST_Replication_MaxInterval', '86400'); // Process each update separately, osmosis cannot merge multiple updates
|
||||
@define('CONST_Replication_Update_Interval', '86400'); // How often upstream publishes diffs
|
||||
@define('CONST_Replication_Recheck_Interval', '900'); // How long to sleep if no update found yet
|
||||
@define('CONST_Pyosmium_Binary', '/usr/local/bin/pyosmium-get-changes');
|
||||
?>
|
14
nominatim.conf
Normal file
14
nominatim.conf
Normal file
@ -0,0 +1,14 @@
|
||||
Listen 8080
|
||||
<VirtualHost *:8080>
|
||||
DocumentRoot /app/src/build/website
|
||||
ServerPath "/nominatim/"
|
||||
CustomLog /var/log/apache2/access.log combined
|
||||
ErrorLog /var/log/apache2/error.log
|
||||
LogLevel debug
|
||||
<Directory /app/src/build/website>
|
||||
Options FollowSymLinks MultiViews
|
||||
DirectoryIndex search.php
|
||||
Require all granted
|
||||
</Directory>
|
||||
AddType text/html .php
|
||||
</VirtualHost>
|
Loading…
Reference in New Issue
Block a user