From 05acd1db10904e2fed973e6f06f724d3bfd24c59 Mon Sep 17 00:00:00 2001 From: Lukas Martinelli Date: Tue, 27 Oct 2015 09:31:43 +0100 Subject: [PATCH] Bake water import file into Docker image --- .travis.yml | 10 +++------- docker-compose.yml | 2 -- src/import-water/Dockerfile | 14 +++++++------- src/import-water/import.sh | 31 ++++++++++++++----------------- 4 files changed, 24 insertions(+), 33 deletions(-) diff --git a/.travis.yml b/.travis.yml index ab58897..aee1675 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,11 +6,8 @@ before_install: - curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > docker-compose - chmod +x docker-compose - sudo mv docker-compose /usr/local/bin - - mkdir -p TRAVIS_BUILD_DIR/import - - wget -nc -P "$TRAVIS_BUILD_DIR/import" "https://s3.amazonaws.com/metro-extracts.mapzen.com/zurich_switzerland.osm.pbf" - - wget -nc -P "$TRAVIS_BUILD_DIR/import" "http://data.openstreetmapdata.com/water-polygons-split-3857.zip" - - unzip -fj "$TRAVIS_BUILD_DIR/import/water-polygons-split-3857.zip" -d "$TRAVIS_BUILD_DIR/import" - - ls -la "$TRAVIS_BUILD_DIR/import" + - wget -nc -P "$HOME/cache" "https://s3.amazonaws.com/metro-extracts.mapzen.com/zurich_switzerland.osm.pbf" + - mkdir -p "$TRAVIS_BUILD_DIR/import" && cp "$HOME/cache/zurich_switzerland.osm.pbf" "$TRAVIS_BUILD_DIR/import" install: - docker-compose build before_script: @@ -25,5 +22,4 @@ script: - curl "http://localhost:8080/index.json" cache: directories: - - ./cache - + - $HOME/cache diff --git a/docker-compose.yml b/docker-compose.yml index d6a04fb..4014584 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,8 +30,6 @@ import: OSM_PASSWORD: "suisse" import-water: build: ./src/import-water - volumes: - - ./import:/data/import links: - postgis:db environment: diff --git a/src/import-water/Dockerfile b/src/import-water/Dockerfile index b489b14..00a97ce 100644 --- a/src/import-water/Dockerfile +++ b/src/import-water/Dockerfile @@ -1,15 +1,15 @@ FROM mdillon/postgis:9.4 -RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - wget unzip \ - --no-install-recommends +RUN apt-get update && apt-get install -y --no-install-recommends \ + wget \ + unzip \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /data/import && wget --quiet http://data.openstreetmapdata.com/water-polygons-split-3857.zip && unzip -j water-polygons-split-3857.zip -d /data/import && rm water-polygons-split-3857.zip +ENV IMPORT_DATA_DIR=/data/import RUN mkdir -p /usr/src/app COPY import.sh /usr/src/app/ WORKDIR /usr/src/app -VOLUME /data/import -ENV IMPORT_DATA_DIR=/data/import - CMD ["./import.sh"] diff --git a/src/import-water/import.sh b/src/import-water/import.sh index 7264208..a755cbf 100755 --- a/src/import-water/import.sh +++ b/src/import-water/import.sh @@ -11,17 +11,9 @@ readonly OSM_DB=${OSM_DB:-osm} readonly OSM_USER=${OSM_USER:-osm} readonly OSM_PASSWORD=${OSM_PASSWORD:-osm} -function download_shp() { - local pbf_url=$1 - wget --directory-prefix "$IMPORT_DATA_DIR" --no-clobber "$pbf_url" - cd $IMPORT_DATA_DIR - unzip water-polygons-split-3857.zip - rm water-polygons-split-3857.zip -} - function import_shp() { local shp_file=$1 - shp2pgsql -g way $shp_file | PG_PASSWORD=$OSM_PASSWORD psql --host="$DB_HOST" --port=5432 --dbname="$OSM_DB" --username="$OSM_USER" + shp2pgsql -g way "$shp_file" | PG_PASSWORD=$OSM_PASSWORD psql --host="$DB_HOST" --port=5432 --dbname="$OSM_DB" --username="$OSM_USER" } function create_index() { @@ -29,23 +21,28 @@ function create_index() { echo $index_command | PG_PASSWORD=$OSM_PASSWORD psql --host="$DB_HOST" --port=5432 --dbname="$OSM_DB" --username="$OSM_USER" } -function main() { - if ! [ $WATER_SHP_DOWNLOAD_URL = false ]; then - download_shp $WATER_SHP_DOWNLOAD_URL - fi +function drop_water() { + local drop_command="DROP TABLE IF EXISTS water_polygons;" + echo $drop_command | PG_PASSWORD=$OSM_PASSWORD psql --host="$DB_HOST" --port=5432 --dbname="$OSM_DB" --username="$OSM_USER" +} +function main() { local shp_file local _shp_file for _shp_file in "$IMPORT_DATA_DIR"/*.shp; do - shp_file=$_shp_file - break + shp_file=$_shp_file + break done - echo "Found shp file $shp_file" + local table_name="water_polygons" + echo "Removing existing table $table_name" + drop_water + + echo "Importing $shp_file into table $table_name" import_shp $shp_file - echo "Create index water_polygons_index on table water_polygons" + echo "Create index water_polygons_index on table $table_name" create_index }