diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8e35a08ade..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -FROM ubuntu:xenial - -# Style dependencies -RUN apt-get update && apt-get install --no-install-recommends -y \ - unzip curl ca-certificates gnupg python postgresql-client \ - fonts-noto-cjk fonts-noto-hinted fonts-noto-unhinted ttf-unifont \ - mapnik-utils \ - && rm -rf /var/lib/apt/lists/* - -# Node.js 6.x LTS -RUN curl -sL https://deb.nodesource.com/setup_6.x | bash \ - && apt-get install --no-install-recommends -y nodejs \ - && rm -rf /var/lib/apt/lists/* - -# Kosmtik with plugins -RUN npm install -g kosmtik - -WORKDIR /usr/lib/node_modules/kosmtik/ -RUN kosmtik plugins --install kosmtik-overpass-layer \ - --install kosmtik-fetch-remote \ - --install kosmtik-overlay \ - --install kosmtik-open-in-josm \ - --install kosmtik-map-compare \ - --install kosmtik-osm-data-overlay \ - --install kosmtik-mapnik-reference \ - --install kosmtik-geojson-overlay \ - && cp /root/.config/kosmtik.yml /tmp/.kosmtik-config.yml - -# Closing section -RUN mkdir -p /openstreetmap-carto -WORKDIR /openstreetmap-carto - -USER 1000 -CMD sh scripts/docker-startup.sh kosmtik diff --git a/Dockerfile.db b/Dockerfile.db deleted file mode 100644 index 63c312a662..0000000000 --- a/Dockerfile.db +++ /dev/null @@ -1,3 +0,0 @@ -FROM mdillon/postgis:9.6 - -ADD ./scripts/tune-postgis.sh /docker-entrypoint-initdb.d diff --git a/.dockerignore b/docker/.dockerignore similarity index 100% rename from .dockerignore rename to docker/.dockerignore diff --git a/docker-compose.yml b/docker/docker-compose.yml similarity index 61% rename from docker-compose.yml rename to docker/docker-compose.yml index 960059414f..970c46a0aa 100644 --- a/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,12 +1,15 @@ -version: '2' +version: '3.2' + services: + kosmtik: image: kosmtik:v1 build: - context: . - dockerfile: Dockerfile + context: images/kosmtik + args: + - APP_UID=1000 volumes: - - .:/openstreetmap-carto + - ../:/openstreetmap-carto depends_on: - db ports: @@ -14,21 +17,25 @@ services: environment: - PGHOST=db - PGUSER=postgres + db: image: db:v1 build: - context: . - dockerfile: Dockerfile.db + context: images/db + volumes: + - db:/openstreetmap-carto environment: - PG_WORK_MEM - PG_MAINTENANCE_WORK_MEM + import: image: import:v1 build: - context: . - dockerfile: Dockerfile.import + context: images/import + args: + - APP_UID=1000 volumes: - - .:/openstreetmap-carto + - ../:/openstreetmap-carto depends_on: - db environment: @@ -37,5 +44,8 @@ services: - PG_WORK_MEM - PG_MAINTENANCE_WORK_MEM - OSM2PGSQL_CACHE - - OSM2PGSQL_NUMPROC + - OSM2PGSQL_NUMPROC=8 - OSM2PGSQL_DATAFILE + +volumes: + db: diff --git a/docker/images/db/Dockerfile b/docker/images/db/Dockerfile new file mode 100644 index 0000000000..a5ebee14bc --- /dev/null +++ b/docker/images/db/Dockerfile @@ -0,0 +1,3 @@ +FROM mdillon/postgis:9.6 + +COPY tune-postgis.sh /docker-entrypoint-initdb.d diff --git a/scripts/tune-postgis.sh b/docker/images/db/tune-postgis.sh similarity index 100% rename from scripts/tune-postgis.sh rename to docker/images/db/tune-postgis.sh diff --git a/Dockerfile.import b/docker/images/import/Dockerfile similarity index 58% rename from Dockerfile.import rename to docker/images/import/Dockerfile index ed9167b1d9..c522c211fe 100644 --- a/Dockerfile.import +++ b/docker/images/import/Dockerfile @@ -1,15 +1,26 @@ FROM debian:stretch # Install tools, utilities and osm2pgsql + RUN set -x && \ DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get install -y --no-install-recommends osm2pgsql postgresql-client && \ rm -rf /var/lib/apt/lists/* -COPY openstreetmap-carto.style / +COPY entrypoint.sh / RUN mkdir -p /openstreetmap-carto WORKDIR /openstreetmap-carto -CMD sh scripts/docker-startup.sh import +# Create auxiliary user for running commands + +ARG APP_UID=1000 +ARG APP_USER="user" + +RUN set -x && \ + useradd -u ${APP_UID} -m -s /bin/bash ${APP_USER} + +USER ${APP_USER} + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/images/import/entrypoint.sh b/docker/images/import/entrypoint.sh new file mode 100755 index 0000000000..e0ca964af3 --- /dev/null +++ b/docker/images/import/entrypoint.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Testing if database is ready +i=1 +MAXCOUNT=60 +echo "Waiting for PostgreSQL to be running" +while [ $i -le $MAXCOUNT ] +do + pg_isready -q && echo "PostgreSQL running" && break + sleep 2 + i=$((i+1)) +done +test $i -gt $MAXCOUNT && echo "Timeout while waiting for PostgreSQL to be running" && exit 1 + +# Creating default database +psql -c "SELECT 1 FROM pg_database WHERE datname = 'gis';" | grep -q 1 || createdb gis && \ +psql -d gis -c 'CREATE EXTENSION IF NOT EXISTS postgis;' && \ +psql -d gis -c 'CREATE EXTENSION IF NOT EXISTS hstore;' && \ + +# Creating default import settings file editable by user and passing values for osm2pgsql +if [ ! -e "docker/.env" ]; then + cat > docker/.env < .env <