Hi everyone,
I’m currently trying to set up OpenRouteService (ORS) with public transport routing using Docker.
The OSM import works fine, but ORS fails when building the transit graph from GTFS data.
I have already tried multiple GTFS datasets.
However, the initialization still fails with the following error: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error while constructing transit network. Is your GTFS file valid? Please check log for possible causes.
docker-compose.yml
ors:
container_name: ors
image: openrouteservice/openrouteservice:v9.5.0
user: 0:0
volumes:
- ./var/lib/ors-9.5/:/home/ors
environment:
BUILD_GRAPHS: True
CONTAINER_LOG_LEVEL: DEBUG
XMS: 1g
XMX: 6g
ADDITIONAL_JAVA_OPTS: ""
ors-config.yml
ors:
engine:
profile_default:
elevation: false
build:
source_file: /home/ors/files/osm_file.pbf
profiles:
cycling-regular:
enabled: true
driving-car:
enabled: true
foot-walking:
enabled: true
public-transport:
enabled: true
logging:
file:
name: ./logs/ors.log
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} %highlight{%-7p} %style{%50t}{Cyan} %style{[ %-40.40c{1.} ]}{Bright Cyan} %m%n"
file: "%d{yyyy-MM-dd HH:mm:ss} %p [%-40.40c{1.}] - %m%n"
level:
root: DEBUG
org.heigit: DEBUG
com.graphhopper: DEBUG
com.graphhopper.gtfs: DEBUG
endpoints:
isochrones:
enabled: true
attribution: openrouteservice.org, OpenStreetMap contributors
maximum_locations: 2
maximum_intervals: 10
allow_compute_area: true
maximum_range_distance_default: 50000
maximum_range_distance:
- profiles: driving-car, driving-hgv
value: 500000
maximum_range_time_default: 18000
maximum_range_time:
- profiles: driving-car, driving-hgv
value: 3600
fastisochrones:
maximum_range_distance_default: 50000
maximum_range_distance:
- profiles: driving-car, driving-hgv
value: 500000
maximum_range_time_default: 18000
maximum_range_time:
- profiles: driving-car, driving-hgv
value: 10800
profiles:
public-transport:
encoder_name: public-transport
build:
encoder_options:
block_fords: false
enable_custom_models: false
elevation: true
gtfs_file: /home/ors/files/google_transit.zip
service:
maximum_visited_nodes: 1000000
ors.log
2025-11-25 12:42:08 DEBUG [o.s.w.s.m.m.a.HttpEntityMethodProcessor ] - Writing ["{"status":"not ready"}"]
2025-11-25 12:42:08 DEBUG [o.s.w.s.DispatcherServlet ] - Completed 503 SERVICE_UNAVAILABLE
2025-11-25 12:42:12 DEBUG [o.s.w.s.DispatcherServlet ] - GET "/ors/v2/health", parameters={}
2025-11-25 12:42:12 DEBUG [s.w.s.m.m.a.RequestMappingHandlerMapping] - Mapped to org.heigit.ors.api.controllers.HealthAPI#fetchHealth()
2025-11-25 12:42:12 DEBUG [o.s.w.s.m.m.a.HttpEntityMethodProcessor ] - Found 'Content-Type:application/json' in response
2025-11-25 12:42:12 DEBUG [o.s.w.s.m.m.a.HttpEntityMethodProcessor ] - Writing ["{"status":"not ready"}"]
2025-11-25 12:42:12 DEBUG [o.s.w.s.DispatcherServlet ] - Completed 503 SERVICE_UNAVAILABLE
2025-11-25 12:42:12 INFO [c.g.r.s.PrepareRoutingSubnetworks ] - foot_recommended - Found 21562 subnetworks (11100 single edges and 10462 components with more than one edge, total nodes: 7254780), took: 4.113425s
2025-11-25 12:42:12 INFO [c.g.r.s.PrepareRoutingSubnetworks ] - foot_recommended - Marked 21560 subnetworks (biggest: 396 edges) -> 2 components(s) remain (smallest: 1362, biggest: 7191644 edges), total marked edges: 25337, took: 0.010589264s
2025-11-25 12:42:12 INFO [c.g.r.s.PrepareRoutingSubnetworks ] - Finished finding and marking subnetworks for 3 jobs, took: 10.697347s, totalMB:6144, usedMB:5489
2025-11-25 12:42:12 INFO [o.h.o.r.g.e.ORSGraphHopper ] - nodes: 2 789 771, edges: 3 627 390
2025-11-25 12:42:13 INFO [o.h.o.r.g.e.ORSGraphHopper ] - Bridge interpolation 0s, tunnel interpolation 0s, ferry interpolation 0s
2025-11-25 12:42:15 INFO [c.g.s.i.LocationIndexTree ] - location index created in 2.0062475s, size:4 551 220, leafs:168 721, precision:500, depth:5, checksum:1951989, entries:[16, 16, 16, 16, 4], entriesPerLeaf:26.974829
2025-11-25 12:42:15 DEBUG [o.s.w.s.DispatcherServlet ] - GET "/ors/v2/health", parameters={}
2025-11-25 12:42:15 DEBUG [s.w.s.m.m.a.RequestMappingHandlerMapping] - Mapped to org.heigit.ors.api.controllers.HealthAPI#fetchHealth()
2025-11-25 12:42:15 DEBUG [o.s.w.s.m.m.a.HttpEntityMethodProcessor ] - Found 'Content-Type:application/json' in response
2025-11-25 12:42:15 DEBUG [o.s.w.s.m.m.a.HttpEntityMethodProcessor ] - Writing ["{"status":"not ready"}"]
2025-11-25 12:42:15 DEBUG [o.s.w.s.DispatcherServlet ] - Completed 503 SERVICE_UNAVAILABLE
2025-11-25 12:42:15 DEBUG [o.h.o.r.RoutingProfileManager ] - java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error while constructing transit network. Is your GTFS file valid? Please check log for possible causes.
2025-11-25 12:42:15 ERROR [o.h.o.r.RoutingProfileManager ] -
2025-11-25 12:42:15 ERROR [o.h.o.r.RoutingProfileManager ] - Exception at RoutingProfileManager initialization: class java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error while constructing transit network. Is your GTFS file valid? Please check log for possible causes.
2025-11-25 12:42:15 ERROR [o.h.o.r.RoutingProfileManager ] -
2025-11-25 12:42:15 DEBUG [j.l.Runtime ] - Runtime.exit() called with status: 1
java.lang.Throwable: Runtime.exit(1)
at java.base/java.lang.Shutdown.logRuntimeExit(Shutdown.java:179) ~[?:?]
at java.base/java.lang.Shutdown.exit(Shutdown.java:160) ~[?:?]
at java.base/java.lang.Runtime.exit(Runtime.java:188) ~[?:?]
at java.base/java.lang.System.exit(System.java:1920) ~[?:?]
at org.heigit.ors.routing.RoutingProfileManager.<init>(RoutingProfileManager.java:41) ~[ors-engine-9.5.0.jar!/:9.5.0]
at org.heigit.ors.api.servlet.listeners.ORSInitContextListener.lambda$contextInitialized$0(ORSInitContextListener.java:61) ~[!/:9.5.0]
at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Any ideas?