Skip to content

Commit

Permalink
Improves docker setup for basic usage to get started more easily
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-j-h committed May 8, 2024
1 parent 80bd995 commit c1bd731
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 50 deletions.
100 changes: 52 additions & 48 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,52 +1,56 @@
FROM debian:bullseye-slim AS src
FROM debian:bookworm-slim AS src
LABEL Description="Tilemaker" Version="1.4.0"

ARG DEBIAN_FRONTEND=noninteractive

# install dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
liblua5.1-0 \
liblua5.1-0-dev \
libsqlite3-dev \
shapelib \
libshp-dev \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-system-dev \
libboost-iostreams-dev \
rapidjson-dev \
cmake \
zlib1g-dev

COPY CMakeLists.txt /
COPY cmake /cmake
COPY src /src
COPY include /include
COPY server /server

WORKDIR /build

RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++ ..
RUN cmake --build .
RUN strip tilemaker
RUN strip tilemaker-server

FROM debian:bullseye-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends \
liblua5.1-0 \
libshp-dev \
libsqlite3-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-iostreams-dev
WORKDIR /
COPY --from=src /build/tilemaker .
COPY resources /resources
COPY process.lua .
COPY config.json .
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
liblua5.1-0-dev \
libsqlite3-dev \
libshp-dev \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-system-dev \
libboost-iostreams-dev \
rapidjson-dev \
cmake \
zlib1g-dev && \
rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app

COPY CMakeLists.txt ./
COPY cmake ./cmake
COPY src ./src
COPY include ./include
COPY server ./server

RUN mkdir build && \
cd build && \
cmake -DCMAKE_BUILD_TYPE=Release .. && \
cmake --build . --parallel $(nproc) && \
strip tilemaker && \
strip tilemaker-server

ENV PATH="/usr/src/app/build:$PATH"

FROM debian:bookworm-slim
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
liblua5.1-0 \
shapelib \
libsqlite3-0 \
libboost-filesystem1.74.0 \
libboost-program-options1.74.0 \
libboost-iostreams1.74.0 && \
rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY --from=src /usr/src/app/build/tilemaker .
COPY --from=src /usr/src/app/build/tilemaker-server .
COPY resources ./resources
COPY process.lua ./
COPY config.json ./

ENV PATH="/usr/src/app/build:$PATH"

# Entrypoint for docker, wrapped with /bin/sh to remove requirement for executable permissions on script
ENTRYPOINT ["/bin/sh", "/resources/docker-entrypoint.sh"]
ENTRYPOINT ["/bin/sh", "/usr/src/app/resources/docker-entrypoint.sh"]
CMD ["--help"]
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@ See an example of a vector tile map produced by tilemaker at [tilemaker.org](htt

![Continuous Integration](https://github.com/systemed/tilemaker/workflows/Continuous%20Integration/badge.svg)

## Getting Started

We provide a ready-to-use docker image that gets you started without having to compile tilemaker from source:

1. Go to http://download.geofabrik.de/europe.html and download the `monaco-latest.osm.pbf` snapshot of OpenStreetMap

2. Run tilemaker on the OpenStreetMap snapshot to generate [Protomaps](https://protomaps.com) vector tiles:

docker run -it --rm -v (pwd):/data ghcr.io/systemed/tilemaker:master /data/monaco-latest.osm.pbf --output /data/monaco-latest.pmtiles

3. Check out what's in the vector tiles e.g. by using the debug viewer [here](https://protomaps.github.io/PMTiles/)


## Installing

tilemaker is written in C++14. The chief dependencies are:
Expand Down
6 changes: 5 additions & 1 deletion docs/INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ Build from project root directory with:

The docker container can be run like this:

docker run -v /Users/Local/Downloads/:/srv -i -t --rm tilemaker /srv/germany-latest.osm.pbf --output=/srv/germany.mbtiles
docker run -it --rm -v $(pwd):/data tilemaker /data/monaco-latest.osm.pbf --output /data/monaco-latest.pmtiles

The tilemaker-server can be run like this:

docker run -it --rm -v $(pwd):/data --entrypoint /usr/src/app/tilemaker-server tilemaker --help

Keep in mind to map the volume your .osm.pbf files are in to a path within your docker container, as seen in the example above.
2 changes: 1 addition & 1 deletion resources/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ echo "DOCKER WARNING: The --store option can be used to partly reduce memory usa
echo "--------------------------------------------------------------------------------" >&2

# Proceed to run the command passed to the script
exec /tilemaker "$@"
exec /usr/src/app/tilemaker "$@"

0 comments on commit c1bd731

Please sign in to comment.