├── .github └── workflows │ └── build.yml ├── Dockerfile ├── LICENSE.txt ├── README.md └── alias_tz.csv /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build and Release Image 2 | 3 | on: 4 | release: 5 | types: 6 | - created 7 | 8 | env: 9 | IMAGE_NAME: valhalla 10 | 11 | jobs: 12 | push: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Build image 17 | run: docker build . --tag image 18 | - name: Log into registry 19 | run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin 20 | - name: Push image 21 | run: | 22 | IMAGE_ID=docker.pkg.github.com/${{ github.repository }}/$IMAGE_NAME 23 | # Strip git ref prefix from version 24 | [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') 25 | echo IMAGE_ID=$IMAGE_ID 26 | echo VERSION=$VERSION 27 | docker tag image $IMAGE_ID:$VERSION 28 | # Use Docker `latest` tag convention 29 | [ "$VERSION" == "master" ] && docker tag image $IMAGE_ID:latest 30 | docker push $IMAGE_ID:$VERSION 31 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Dockerfile to build Valhalla in stage 1, 2 | # then build our image by pulling out 3 | # the compiled Valhalla binaries from stage 1. 4 | 5 | # ##################################### 6 | # ############ STAGE 1 ################ 7 | # ##################################### 8 | 9 | ARG VALHALLA_VERSION=3.5.1 10 | ARG VALHALLA_COMMIT=d377c8ace9ea88dfa989466258bf738b1080f22a 11 | ARG PRIME_SERVER_COMMIT=4508553b2dd29fadfafcc7c766aa6e9b94455fcb 12 | FROM ubuntu:24.04 13 | ARG VALHALLA_VERSION 14 | ARG VALHALLA_COMMIT 15 | ARG PRIME_SERVER_COMMIT 16 | 17 | # Install base packages 18 | ENV DEBIAN_FRONTEND=noninteractive 19 | RUN apt-get update && apt-get install -y \ 20 | autoconf \ 21 | automake \ 22 | build-essential \ 23 | curl \ 24 | g++ \ 25 | gcc \ 26 | git \ 27 | jq \ 28 | lcov \ 29 | libbz2-dev \ 30 | libboost-all-dev \ 31 | libcurl4-openssl-dev \ 32 | libczmq-dev \ 33 | libexpat1-dev \ 34 | libgeos++-dev \ 35 | libgeos-dev \ 36 | libidn11-dev \ 37 | libluajit-5.1-dev \ 38 | liblz4-dev \ 39 | libspatialite-dev \ 40 | libsqlite3-dev \ 41 | libsqlite3-mod-spatialite \ 42 | libprotobuf-dev \ 43 | libtool \ 44 | libzmq3-dev \ 45 | make \ 46 | osmctools \ 47 | osmosis \ 48 | parallel \ 49 | pkgconf \ 50 | protobuf-compiler \ 51 | python3-all-dev \ 52 | python3-pip \ 53 | software-properties-common \ 54 | spatialite-bin \ 55 | vim-common \ 56 | wget \ 57 | zlib1g-dev 58 | 59 | # install a more recent cmake than available through apt-get for Ubuntu 18.04 60 | RUN curl -sSL https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-x86_64.tar.gz | tar -xzC /opt 61 | ENV PATH="/opt/cmake-3.21.1-linux-x86_64/bin/:${PATH}" 62 | 63 | RUN mkdir -p /src && cd /src 64 | 65 | # prime_server 66 | RUN git clone https://github.com/kevinkreiser/prime_server.git && (cd prime_server && git checkout ${PRIME_SERVER_COMMIT} && git submodule update --init --recursive && mkdir -p build && cd build && cmake .. && make -j2 install) 67 | 68 | # valhalla 69 | # NOTE: -DENABLE_BENCHMARKS=OFF is because of https://github.com/valhalla/valhalla/issues/3200 70 | # NOTE: -ENABLE_SINGLE_FILES_WERROR=OFF because of https://github.com/valhalla/valhalla/issues/3157 71 | RUN git clone https://github.com/valhalla/valhalla.git && (cd valhalla && git checkout ${VALHALLA_COMMIT} -b build && git submodule update --init --recursive && mkdir -p build && cd build && cmake .. -DCMAKE_C_COMPILER=gcc -DPKG_CONFIG_PATH=/usr/local/lib/pkgconfig -DCMAKE_BUILD_TYPE=Release -DENABLE_NODE_BINDINGS=OFF -DENABLE_PYTHON_BINDINGS=OFF -DENABLE_BENCHMARKS=OFF -DENABLE_SINGLE_FILES_WERROR=OFF && make -j2 install) && rm -rf /src 72 | 73 | # ##################################### 74 | # ############ STAGE 2 ################ 75 | # ##################################### 76 | 77 | FROM ubuntu:24.04 78 | ARG VALHALLA_VERSION 79 | ARG VALHALLA_CONCURRENCY=1 80 | 81 | # Copy ARG to ENV 82 | ENV VALHALLA_VERSION=${VALHALLA_VERSION} 83 | ENV VALHALLA_CONCURRENCY=${VALHALLA_CONCURRENCY} 84 | 85 | # Utilities needed 86 | RUN apt-get update && apt-get install --no-install-recommends -y apt-transport-https curl libcurl4 ca-certificates gnupg && rm -rf /var/lib/apt/lists/* 87 | 88 | # Install apt packages packages 89 | RUN apt-get update && apt-get install --no-install-recommends -y \ 90 | libluajit-5.1-2 \ 91 | libprotobuf-dev \ 92 | libzmq5 \ 93 | libczmq4 \ 94 | libsqlite3-mod-spatialite \ 95 | python3-pip \ 96 | spatialite-bin \ 97 | jo \ 98 | jq \ 99 | wget \ 100 | unzip \ 101 | && rm -rf /var/lib/apt/lists/* 102 | 103 | # Copy previous installs 104 | COPY --from=0 /usr/local /usr/local 105 | 106 | # Fix things 107 | ENV LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/local/lib" 108 | RUN ln -s /usr/lib/x86_64-linux-gnu/mod_spatialite.so.7.1.0 /usr/lib/x86_64-linux-gnu/mod_spatialite 109 | 110 | # Setup 111 | WORKDIR /build 112 | ENV WORKDIR=/build DATADIR=/data VALHALLA_CONFIG=/build/valhalla.json 113 | RUN mkdir -p ${WORKDIR} ${DATADIR} 114 | RUN valhalla_build_config > ${VALHALLA_CONFIG} 115 | ADD alias_tz.csv ${WORKDIR} 116 | 117 | # Default command 118 | CMD valhalla_service ${VALHALLA_CONFIG} ${VALHALLA_CONCURRENCY} -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Unless otherwise indicated: 2 | 3 | Copyright Interline Technologies LLC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Interline's Valhalla Dockerfile 2 | 3 | A Dockerfile to compile the [Valhalla](https://github.com/valhalla/valhalla) routing engine from source. 4 | 5 | The main Dockerfile is a two-stage build, with the first stage creating installing all the compiler, library, and dev toolchains necessary to compile Valhalla and friends, with the second stage copying out these binary products from `/usr/local/` and creating a smaller image with only Valhalla run-time dependencies that can then be used as a base image for further customization. 6 | 7 | Bring your own tiles. Or use PlanetUtils and its [`valhalla_tilepack_download`](https://github.com/interline-io/planetutils#valhalla_tilepack_download) command to download [Valhalla Tilepacks](https://www.interline.io/valhalla/tilepacks/) to use within this container. 8 | 9 | ## Download from GitHub Packages 10 | 11 | Images are built by GitHub Actions and published to GitHub at [`ghcr.io/interline-io/valhalla-docker/valhalla`](https://github.com/interline-io/valhalla-docker/pkgs/container/valhalla-docker%2Fvalhalla) 12 | 13 | _Note_: Previously we published images to Docker Hub at [`interline/valhalla`](https://hub.docker.com/r/interline/valhalla). Older tags are still available to download. Unfortunately, [Docker Hub is no longer able to provide a free tier to open-source projects](https://www.docker.com/blog/changes-to-docker-hub-autobuilds/). 14 | -------------------------------------------------------------------------------- /alias_tz.csv: -------------------------------------------------------------------------------- 1 | Pacific/Ponape,Pacific/Pohnpei 2 | Pacific/Midway,Pacific/Pago_Pago 3 | Pacific/Samoa,Pacific/Pago_Pago 4 | US/Samoa,Pacific/Pago_Pago 5 | Kwajalein,Pacific/Kwajalein 6 | Pacific/Johnston,Pacific/Honolulu 7 | US/Hawaii,Pacific/Honolulu 8 | Pacific/Saipan,Pacific/Guam 9 | Chile/EasterIsland,Pacific/Easter 10 | Pacific/Truk,Pacific/Chuuk 11 | Pacific/Yap,Pacific/Chuuk 12 | NZ-CHAT,Pacific/Chatham 13 | Antarctica/McMurdo,Pacific/Auckland 14 | Antarctica/South_Pole,Pacific/Auckland 15 | NZ,Pacific/Auckland 16 | Europe/Busingen,Europe/Zurich 17 | Europe/Vaduz,Europe/Zurich 18 | Poland,Europe/Warsaw 19 | Europe/San_Marino,Europe/Rome 20 | Europe/Vatican,Europe/Rome 21 | Europe/Bratislava,Europe/Prague 22 | Arctic/Longyearbyen,Europe/Oslo 23 | Atlantic/Jan_Mayen,Europe/Oslo 24 | W-SU,Europe/Moscow 25 | Europe/Belfast,Europe/London 26 | Europe/Guernsey,Europe/London 27 | Europe/Isle_of_Man,Europe/London 28 | Europe/Jersey,Europe/London 29 | GB,Europe/London 30 | GB-Eire,Europe/London 31 | Portugal,Europe/Lisbon 32 | Asia/Istanbul,Europe/Istanbul 33 | Turkey,Europe/Istanbul 34 | Europe/Mariehamn,Europe/Helsinki 35 | Eire,Europe/Dublin 36 | Europe/Tiraspol,Europe/Chisinau 37 | Europe/Ljubljana,Europe/Belgrade 38 | Europe/Podgorica,Europe/Belgrade 39 | Europe/Sarajevo,Europe/Belgrade 40 | Europe/Skopje,Europe/Belgrade 41 | Europe/Zagreb,Europe/Belgrade 42 | UTC,Etc/UTC 43 | Etc/Universal,Etc/UTC 44 | Etc/Zulu,Etc/UTC 45 | Universal,Etc/UTC 46 | Zulu,Etc/UTC 47 | UCT,Etc/UCT 48 | Etc/GMT+0,Etc/GMT 49 | Etc/GMT0,Etc/GMT 50 | Etc/GMT-0,Etc/GMT 51 | GMT,Etc/GMT 52 | Etc/Greenwich,Etc/GMT 53 | GMT+0,Etc/GMT 54 | GMT0,Etc/GMT 55 | GMT−0,Etc/GMT 56 | Greenwich,Etc/GMT 57 | Australia/Canberra,Australia/Sydney 58 | Australia/ACT,Australia/Sydney 59 | Australia/NSW,Australia/Sydney 60 | Australia/West,Australia/Perth 61 | Australia/Victoria,Australia/Melbourne 62 | Australia/LHI,Australia/Lord_Howe 63 | Australia/Tasmania,Australia/Hobart 64 | Australia/North,Australia/Darwin 65 | Australia/Yancowinna,Australia/Broken_Hill 66 | Australia/Queensland,Australia/Brisbane 67 | Australia/South,Australia/Adelaide 68 | Iceland,Atlantic/Reykjavik 69 | Atlantic/Faeroe,Atlantic/Faroe 70 | Asia/Rangoon,Asia/Yangon 71 | Asia/Kashgar,Asia/Urumqi 72 | Asia/Ulan_Bator,Asia/Ulaanbaatar 73 | Japan,Asia/Tokyo 74 | Asia/Thimbu,Asia/Thimphu 75 | Iran,Asia/Tehran 76 | ROC,Asia/Taipei 77 | Singapore,Asia/Singapore 78 | Asia/Chongqing,Asia/Shanghai 79 | Asia/Chungking,Asia/Shanghai 80 | Asia/Harbin,Asia/Shanghai 81 | PRC,Asia/Shanghai 82 | ROK,Asia/Seoul 83 | Asia/Aden,Asia/Riyadh 84 | Asia/Kuwait,Asia/Riyadh 85 | Asia/Bahrain,Asia/Qatar 86 | Asia/Ujung_Pandang,Asia/Makassar 87 | Asia/Macao,Asia/Macau 88 | Asia/Calcutta,Asia/Kolkata 89 | Asia/Katmandu,Asia/Kathmandu 90 | Asia/Tel_Aviv,Asia/Jerusalem 91 | Israel,Asia/Jerusalem 92 | Hongkong,Asia/Hong_Kong 93 | Asia/Saigon,Asia/Ho_Chi_Minh 94 | Asia/Muscat,Asia/Dubai 95 | Asia/Dacca,Asia/Dhaka 96 | Asia/Phnom_Penh,Asia/Bangkok 97 | Asia/Vientiane,Asia/Bangkok 98 | Asia/Ashkhabad,Asia/Ashgabat 99 | Canada/Central,America/Winnipeg 100 | Canada/Yukon,America/Whitehorse 101 | Canada/Pacific,America/Vancouver 102 | America/Montreal,America/Toronto 103 | Canada/Eastern,America/Toronto 104 | America/Ensenada,America/Tijuana 105 | America/Santa_Isabel,America/Tijuana 106 | Mexico/BajaNorte,America/Tijuana 107 | Canada/Newfoundland,America/St_Johns 108 | Brazil/East,America/Sao_Paulo 109 | Chile/Continental,America/Santiago 110 | America/Porto_Acre,America/Rio_Branco 111 | Brazil/Acre,America/Rio_Branco 112 | Canada/Saskatchewan,America/Regina 113 | America/Anguilla,America/Port_of_Spain 114 | America/Antigua,America/Port_of_Spain 115 | America/Dominica,America/Port_of_Spain 116 | America/Grenada,America/Port_of_Spain 117 | America/Guadeloupe,America/Port_of_Spain 118 | America/Marigot,America/Port_of_Spain 119 | America/Montserrat,America/Port_of_Spain 120 | America/St_Barthelemy,America/Port_of_Spain 121 | America/St_Kitts,America/Port_of_Spain 122 | America/St_Lucia,America/Port_of_Spain 123 | America/St_Thomas,America/Port_of_Spain 124 | America/St_Vincent,America/Port_of_Spain 125 | America/Tortola,America/Port_of_Spain 126 | America/Virgin,America/Port_of_Spain 127 | US/Arizona,America/Phoenix 128 | America/Cayman,America/Panama 129 | Brazil/DeNoronha,America/Noronha 130 | US/Eastern,America/New_York 131 | Mexico/General,America/Mexico_City 132 | Mexico/BajaSur,America/Mazatlan 133 | Brazil/West,America/Manaus 134 | US/Pacific,America/Los_Angeles 135 | US/Pacific-New,America/Los_Angeles 136 | America/Louisville,America/Kentucky/Louisville 137 | Jamaica,America/Jamaica 138 | America/Knox_IN,America/Indiana/Knox 139 | US/Indiana-Starke,America/Indiana/Knox 140 | America/Fort_Wayne,America/Indiana/Indianapolis 141 | America/Indianapolis,America/Indiana/Indianapolis 142 | US/East-Indiana,America/Indiana/Indianapolis 143 | Cuba,America/Havana 144 | Canada/Atlantic,America/Halifax 145 | Canada/Mountain,America/Edmonton 146 | US/Michigan,America/Detroit 147 | America/Shiprock,America/Denver 148 | Navajo,America/Denver 149 | US/Mountain,America/Denver 150 | America/Aruba,America/Curacao 151 | America/Kralendijk,America/Curacao 152 | America/Lower_Princes,America/Curacao 153 | US/Central,America/Chicago 154 | America/Coral_Harbour,America/Atikokan 155 | America/Mendoza,America/Argentina/Mendoza 156 | America/Jujuy,America/Argentina/Jujuy 157 | America/Cordoba,America/Argentina/Cordoba 158 | America/Rosario,America/Argentina/Cordoba 159 | America/Argentina/ComodRivadavia,America/Argentina/Catamarca 160 | America/Catamarca,America/Argentina/Catamarca 161 | America/Buenos_Aires,America/Argentina/Buenos_Aires 162 | US/Alaska,America/Anchorage 163 | America/Atka,America/Adak 164 | US/Aleutian,America/Adak 165 | Libya,Africa/Tripoli 166 | Africa/Addis_Ababa,Africa/Nairobi 167 | Africa/Asmara,Africa/Nairobi 168 | Africa/Dar_es_Salaam,Africa/Nairobi 169 | Africa/Djibouti,Africa/Nairobi 170 | Africa/Kampala,Africa/Nairobi 171 | Africa/Mogadishu,Africa/Nairobi 172 | Indian/Antananarivo,Africa/Nairobi 173 | Indian/Comoro,Africa/Nairobi 174 | Indian/Mayotte,Africa/Nairobi 175 | Africa/Blantyre,Africa/Maputo 176 | Africa/Bujumbura,Africa/Maputo 177 | Africa/Gaborone,Africa/Maputo 178 | Africa/Harare,Africa/Maputo 179 | Africa/Kigali,Africa/Maputo 180 | Africa/Lubumbashi,Africa/Maputo 181 | Africa/Lusaka,Africa/Maputo 182 | Africa/Bangui,Africa/Lagos 183 | Africa/Brazzaville,Africa/Lagos 184 | Africa/Douala,Africa/Lagos 185 | Africa/Kinshasa,Africa/Lagos 186 | Africa/Libreville,Africa/Lagos 187 | Africa/Luanda,Africa/Lagos 188 | Africa/Malabo,Africa/Lagos 189 | Africa/Niamey,Africa/Lagos 190 | Africa/Porto-Novo,Africa/Lagos 191 | Africa/Sao_Tome,Africa/Lagos 192 | Africa/Maseru,Africa/Johannesburg 193 | Africa/Mbabane,Africa/Johannesburg 194 | Egypt,Africa/Cairo 195 | Africa/Bamako,Africa/Abidjan 196 | Africa/Banjul,Africa/Abidjan 197 | Africa/Conakry,Africa/Abidjan 198 | Africa/Dakar,Africa/Abidjan 199 | Africa/Freetown,Africa/Abidjan 200 | Africa/Lome,Africa/Abidjan 201 | Africa/Nouakchott,Africa/Abidjan 202 | Africa/Ouagadougou,Africa/Abidjan 203 | Africa/Timbuktu,Africa/Abidjan 204 | Atlantic/St_Helena,Africa/Abidjan 205 | --------------------------------------------------------------------------------