-
-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8 from peter-evans/update-nominatim
Update Nominatim to version 3.2.0
- Loading branch information
Showing
6 changed files
with
200 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
FROM peterevans/trusty-gcloud:1.2.17 as builder | ||
|
||
MAINTAINER Peter Evans <[email protected]> | ||
|
||
ENV NOMINATIM_VERSION 3.2.0 | ||
|
||
# Let the container know that there is no TTY | ||
ENV DEBIAN_FRONTEND noninteractive | ||
|
||
# Install packages | ||
RUN apt-get -y update \ | ||
&& apt-get install -y -qq --no-install-recommends \ | ||
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.3 \ | ||
php5 \ | ||
php5-cli \ | ||
curl | ||
|
||
# Build Nominatim | ||
RUN cd /srv \ | ||
&& curl --silent -L http://www.nominatim.org/release/Nominatim-$NOMINATIM_VERSION.tar.bz2 -o v$NOMINATIM_VERSION.tar.bz2 \ | ||
&& tar xf v$NOMINATIM_VERSION.tar.bz2 \ | ||
&& rm v$NOMINATIM_VERSION.tar.bz2 \ | ||
&& mv Nominatim-$NOMINATIM_VERSION nominatim \ | ||
&& cd nominatim \ | ||
&& mkdir build \ | ||
&& cd build \ | ||
&& cmake .. \ | ||
&& make | ||
|
||
|
||
FROM peterevans/trusty-gcloud:1.2.17 | ||
|
||
# Let the container know that there is no TTY | ||
ENV DEBIAN_FRONTEND noninteractive | ||
|
||
# Set locale and install packages | ||
ENV LANG C.UTF-8 | ||
RUN locale-gen en_US.UTF-8 \ | ||
&& update-locale LANG=en_US.UTF-8 \ | ||
&& apt-get -y update \ | ||
&& apt-get install -y -qq --no-install-recommends \ | ||
postgresql-contrib \ | ||
postgresql-9.3-postgis-2.1 \ | ||
postgresql-server-dev-9.3 \ | ||
apache2 \ | ||
php5 \ | ||
php5-pgsql \ | ||
php5-intl \ | ||
libapache2-mod-php5 \ | ||
php-pear \ | ||
php-db \ | ||
curl \ | ||
&& apt-get clean \ | ||
&& rm -rf /var/lib/apt/lists/* \ | ||
&& rm -rf /tmp/* /var/tmp/* | ||
|
||
# Copy the application from the builder image | ||
COPY --from=builder /srv/nominatim /srv/nominatim | ||
|
||
# Configure Nominatim | ||
COPY local.php /srv/nominatim/build/settings/local.php | ||
|
||
# Configure Apache | ||
COPY nominatim.conf /etc/apache2/sites-enabled/000-default.conf | ||
|
||
# Allow remote connections to PostgreSQL | ||
RUN echo "host all all 0.0.0.0/0 trust" >> /etc/postgresql/9.3/main/pg_hba.conf \ | ||
&& echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf | ||
|
||
# Set the entrypoint | ||
COPY docker-entrypoint.sh / | ||
RUN chmod +x /docker-entrypoint.sh | ||
ENTRYPOINT ["/docker-entrypoint.sh"] | ||
|
||
EXPOSE 5432 | ||
EXPOSE 8080 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
#!/bin/bash | ||
|
||
if [ "$NOMINATIM_MODE" != "CREATE" ] && [ "$NOMINATIM_MODE" != "RESTORE" ]; then | ||
# Default to CREATE | ||
NOMINATIM_MODE="CREATE" | ||
fi | ||
|
||
# Defaults | ||
NOMINATIM_DATA_PATH=${NOMINATIM_DATA_PATH:="/srv/nominatim/data"} | ||
NOMINATIM_DATA_LABEL=${NOMINATIM_DATA_LABEL:="data"} | ||
NOMINATIM_PBF_URL=${NOMINATIM_PBF_URL:="http://download.geofabrik.de/asia/maldives-latest.osm.pbf"} | ||
NOMINATIM_POSTGRESQL_DATA_PATH=${NOMINATIM_POSTGRESQL_DATA_PATH:="/var/lib/postgresql/9.3/main"} | ||
# Google Storage variables | ||
NOMINATIM_SA_KEY_PATH=${NOMINATIM_SA_KEY_PATH:=""} | ||
NOMINATIM_PROJECT_ID=${NOMINATIM_PROJECT_ID:=""} | ||
NOMINATIM_GS_BUCKET=${NOMINATIM_GS_BUCKET:=""} | ||
|
||
|
||
if [ "$NOMINATIM_MODE" == "CREATE" ]; then | ||
|
||
# Retrieve the PBF file | ||
curl $NOMINATIM_PBF_URL --create-dirs -o $NOMINATIM_DATA_PATH/$NOMINATIM_DATA_LABEL.osm.pbf | ||
# Allow user accounts read access to the data | ||
chmod 755 $NOMINATIM_DATA_PATH | ||
|
||
# Start PostgreSQL | ||
service postgresql start | ||
|
||
# Import data | ||
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 | ||
sudo -u nominatim /srv/nominatim/build/utils/setup.php --osm-file $NOMINATIM_DATA_PATH/$NOMINATIM_DATA_LABEL.osm.pbf --all --threads 2 | ||
|
||
if [ ! -z "$NOMINATIM_SA_KEY_PATH" ] && [ ! -z "$NOMINATIM_PROJECT_ID" ] && [ ! -z "$NOMINATIM_GS_BUCKET" ]; then | ||
|
||
# Stop PostgreSQL | ||
service postgresql stop | ||
|
||
# Archive PostgreSQL data | ||
tar cz $NOMINATIM_POSTGRESQL_DATA_PATH | split -b 1024MiB - $NOMINATIM_DATA_PATH/$NOMINATIM_DATA_LABEL.tgz_ | ||
|
||
# Activate the service account to access storage | ||
gcloud auth activate-service-account --key-file $NOMINATIM_SA_KEY_PATH | ||
# Set the Google Cloud project ID | ||
gcloud config set project $NOMINATIM_PROJECT_ID | ||
|
||
# Copy the archive to storage | ||
gsutil -m cp $NOMINATIM_DATA_PATH/*.tgz* $NOMINATIM_GS_BUCKET/$NOMINATIM_DATA_LABEL | ||
|
||
# Start PostgreSQL | ||
service postgresql start | ||
|
||
fi | ||
|
||
else | ||
|
||
if [ ! -z "$NOMINATIM_SA_KEY_PATH" ] && [ ! -z "$NOMINATIM_PROJECT_ID" ] && [ ! -z "$NOMINATIM_GS_BUCKET" ]; then | ||
|
||
# Activate the service account to access storage | ||
gcloud auth activate-service-account --key-file $NOMINATIM_SA_KEY_PATH | ||
# Set the Google Cloud project ID | ||
gcloud config set project $NOMINATIM_PROJECT_ID | ||
|
||
# Copy the archive from storage | ||
mkdir -p $NOMINATIM_DATA_PATH | ||
gsutil -m cp $NOMINATIM_GS_BUCKET/$NOMINATIM_DATA_LABEL/*.tgz* $NOMINATIM_DATA_PATH | ||
|
||
# Remove any files present in the target directory | ||
rm -rf $NOMINATIM_POSTGRESQL_DATA_PATH/* | ||
|
||
# Extract the archive | ||
cat $NOMINATIM_DATA_PATH/$NOMINATIM_DATA_LABEL.tgz_* | tar xz -C $NOMINATIM_POSTGRESQL_DATA_PATH --strip-components=5 | ||
|
||
# Start PostgreSQL | ||
service postgresql start | ||
|
||
fi | ||
|
||
fi | ||
|
||
# Tail Apache logs | ||
tail -f /var/log/apache2/* & | ||
|
||
# Run Apache in the foreground | ||
/usr/sbin/apache2ctl -D FOREGROUND |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?php | ||
// Paths | ||
@define('CONST_Postgresql_Version', '9.3'); | ||
@define('CONST_Postgis_Version', '2.1'); | ||
// Website settings | ||
@define('CONST_Website_BaseURL', '/'); | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
Listen 8080 | ||
<VirtualHost *:8080> | ||
DocumentRoot /srv/nominatim/build/website | ||
CustomLog /var/log/apache2/access.log combined | ||
ErrorLog /var/log/apache2/error.log | ||
LogLevel debug | ||
<Directory /srv/nominatim/build/website> | ||
Options FollowSymLinks MultiViews | ||
DirectoryIndex search.php | ||
Require all granted | ||
</Directory> | ||
AddType text/html .php | ||
</VirtualHost> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters