This image includes all dependencies and projects needed to successfully run an instance of vroom-express
on top of vroom
. Within 2 minutes you'll have a routing optimization engine running on your machine.
docker run -dt --name vroom \
--net host \ # or set the container name as host in config.yml and use --port 3000:3000 instead, see below
-v $PWD/conf:/conf \ # mapped volume for config & log
-e VROOM_ROUTER=ors \ # routing layer: osrm or ors
vroomvrp/vroom-docker:v1.9.0
If you want to build the image yourself, run a
docker build -t vroomvrp/vroom-docker:v1.9.0 --build-arg VROOM_RELEASE=v1.9.0 --build-arg VROOM_EXPRESS_RELEASE=v0.8.0 .
Note, you should have access to a self-hosted instance of OSRM or OpenRouteService for the routing server, see e.g.
docker-compose.yml
for an example.
The tagging scheme follows the release convention of vroom
and adds patch releases for vroom-express
patch releases.
VROOM_ROUTER
: specifies the routing engine to be used,osrm
orors
. Defaultosrm
.
The pre-configured host for the routing servers is localhost
and port: 8080
for ORS, port: 5000
for OSRM.
Note, the environment variable
VROOM_ROUTER
has precedence over therouter
setting inconfig.yml
.
All relevant files are located inside the container's /conf
directory and can be shared with the host. These include:
access.log
: the server log forvroom-express
config.yml
: the server configuration file, which gives you full control over thevroom-express
configuration. If you need to edit the configuration, rundocker restart vroom
to restart the server with the new settings.
Add a -v $PWD/conf:/conf
to your docker run
command.
If you prefer to build the image from source, there are 2 build arguments:
VROOM_RELEASE
: specifies VROOM's git branch, commit hash or release (e.g.v1.9.0
) to install in the containerVROOM_EXPRESS_RELEASE
: specifiesvroom-express
's git branch, commit hash or release (e.g.v0.8.0
) to install in the container
Note, not all versions are compatible with each other
We include a docker-compose.yml
in the project to get you started easily.
docker-compose up -d
will pull the latest vroom-docker
image and the latest openrouteservice
docker image.
You have the option to use OpenRouteService or OSRM. However, the proper setup in Docker or docker-compose
depends on how you run the routing server.
If you started the routing layer in a separate Docker container via docker run
, you'll have to start the vroom
container on the host
network by adding --net host
. The disadvantage is that you'll have to assign vroom-express
configured port
on the host machine. If port 3000 is already occupied on your machine, configure a different port in config.yml
.
Alternatively you can add both containers to a private Docker network and change the routing server host(s) to the routing server container name(s) in config.yml
before restarting the vroom
container. However, the concepts involved are beyond the scope of this project.
Make sure to include a network_mode: host
in your vroom
service section, which will have the same effect as adding --net host
to a docker run
statement.
Also here the alternative is to create a private Docker network, where your services only publish the ports needed to run the stack. Note, you'll have to change the host(s) in config.yml
to the service name(s) defined in docker-compose.yml
.
In this case, you'll have to edit the mapped config.yml
to include the host and port you published the routing server on.
-Clone the repo
-Add your map.osm.pbf to a folder and point the ors/osrm to it in docker-compose.yml
-Set max waypoints in conf/app.config in addition to the vroom-conf
-Install with docker-compose up -d
Expose vroom-express on a machine port:
-Change network_mode:host to ports:3000:3000
-Change 0.0.0.0
to ors
(or osrm
) in vroom-conf
docker build -t vroomvrp/vroom-docker:v1.10.0 --build-arg VROOM_RELEASE=v1.10.0 --build-arg VROOM_EXPRESS_RELEASE=v0.9.0 .
gcloud builds submit --tag gcr.io/block-bins/routeoptimizer
Add a line to copy your custom configuration in Dockerfile: COPY ./vroom-conf/config.yml /conf/
-Change ors
(or osrm
) back to 0.0.0.0
in vroom-conf
config.yml host port needs to change to whatever cloud run gives you. Configure firewall on GCP set routeoptimizer env variable in GCP - VROOM_ROUTER=ors # router to use, osrm or ors Add to vroom dockerfile: COPY ./vroom-conf /conf/