docker pull atcr.io/rtw.run/graphhopper:latest
graphhopper
Routing server for rtw.run, an adventure motorcycle trip planning app.
What is GraphHopper?
GraphHopper is a fast, memory-efficient, open-source routing engine written in Java. It calculates routes for a variety of vehicles (car, bike, foot, motorcycle, …) from OpenStreetMap data and serves them over a web API. See https://www.graphhopper.com/ for the project homepage and documentation.
This image packages the GraphHopper routing server, configured for rtw.run’s routing profiles.
Running the container
Multiarch image (amd64 + arm64): atcr.io/rtw.run/graphhopper:latest
The image contains binaries + entrypoint only. GraphHopper’s preprocessed routing data (the graph-cache) lives on a volume: either download it at container start by setting GRAPH_CACHE_URL, or pre-populate the volume from a graphhopper-builder run on the same host.
mkdir -p /srv/rtw/graphhopper
podman run -d --name graphhopper --userns=keep-id \
-p 127.0.0.1:8989:8989 \
-v /srv/rtw/graphhopper:/data/graphhopper \
-v /etc/rclone/rclone.conf:/config/rclone/rclone.conf:ro \
-e XDG_CONFIG_HOME=/config \
-e GRAPH_CACHE_URL=r2://rtw-data/graphhopper/graph-cache.tar.zst \
atcr.io/rtw.run/graphhopper:latest
| Var | Default | Meaning |
|---|---|---|
GRAPH_CACHE_URL |
unset | r2://bucket/path/graph-cache.tar.zst. If set, the graph is re-downloaded whenever the remote .md5 sidecar changes. If unset, /data/graphhopper/graph-cache must already exist. |
JAVA_OPTS |
-Xms16g -Xmx48g |
Server heap. MMAP_STORE (default) keeps the graph in page cache; raise heap only with RAM_STORE. |
r2:// URLs are handled by rclone, so the container expects an rclone remote named r2 (mounted config or RCLONE_CONFIG_R2_* env vars).
Health check: curl http://localhost:8989/health
Related images
graphhopper-builder— one-shot job that builds a fresh graph-cache from OSM data.