- Remove wget package from builder stage, because it is not used - Uppercase "FROM ... as" -> "FROM ... AS" to silence a "docker build" warning - Sort packages alphabetically and put them on separate lines for easier comparison
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| FROM debian:bookworm-slim AS builder
 | |
| ARG DOCKER_TAG
 | |
| ARG BUILD_CONCURRENCY
 | |
| 
 | |
| RUN mkdir -p /src /opt && \
 | |
|     apt-get update && \
 | |
|     apt-get -y --no-install-recommends --no-install-suggests install \
 | |
|         ca-certificates \
 | |
|         cmake \
 | |
|         g++ \
 | |
|         gcc \
 | |
|         git \
 | |
|         libboost1.81-all-dev \
 | |
|         libbz2-dev \
 | |
|         liblua5.4-dev \
 | |
|         libtbb-dev \
 | |
|         libxml2-dev \
 | |
|         libzip-dev \
 | |
|         lua5.4 \
 | |
|         make \
 | |
|         pkg-config
 | |
| 
 | |
| COPY . /src
 | |
| WORKDIR /src
 | |
| 
 | |
| RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \
 | |
|     export CXXFLAGS="-Wno-array-bounds -Wno-uninitialized" && \
 | |
|     echo "Building OSRM ${DOCKER_TAG}" && \
 | |
|     git show --format="%H" | head -n1 > /opt/OSRM_GITSHA && \
 | |
|     echo "Building OSRM gitsha $(cat /opt/OSRM_GITSHA)" && \
 | |
|     mkdir -p build && \
 | |
|     cd build && \
 | |
|     BUILD_TYPE="Release" && \
 | |
|     ENABLE_ASSERTIONS="Off" && \
 | |
|     BUILD_TOOLS="Off" && \
 | |
|     case ${DOCKER_TAG} in *"-debug"*) BUILD_TYPE="Debug";; esac && \
 | |
|     case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On" && BUILD_TOOLS="On";; esac && \
 | |
|     echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} BUILD_TOOLS=${BUILD_TOOLS}" && \
 | |
|     cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DBUILD_TOOLS=${BUILD_TOOLS} -DENABLE_LTO=On && \
 | |
|     make -j${NPROC} install && \
 | |
|     cd ../profiles && \
 | |
|     cp -r * /opt && \
 | |
|     strip /usr/local/bin/* && \
 | |
|     rm -rf /src
 | |
| 
 | |
| 
 | |
| # Multistage build to reduce image size - https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds
 | |
| # Only the content below ends up in the image, this helps remove /src from the image (which is large)
 | |
| FROM debian:bookworm-slim AS runstage
 | |
| 
 | |
| COPY --from=builder /usr/local /usr/local
 | |
| COPY --from=builder /opt /opt
 | |
| 
 | |
| RUN apt-get update && \
 | |
|     apt-get install -y --no-install-recommends --no-install-suggests \
 | |
|         expat \
 | |
|         libboost-date-time1.81.0 \
 | |
|         libboost-iostreams1.81.0 \
 | |
|         libboost-program-options1.81.0 \
 | |
|         libboost-thread1.81.0 \
 | |
|         liblua5.4-0 \
 | |
|         libtbb12 && \
 | |
|     rm -rf /var/lib/apt/lists/* && \
 | |
| # Add /usr/local/lib to ldconfig to allow loading libraries from there
 | |
|     ldconfig /usr/local/lib
 | |
| 
 | |
| RUN /usr/local/bin/osrm-extract --help && \
 | |
|     /usr/local/bin/osrm-routed --help && \
 | |
|     /usr/local/bin/osrm-contract --help && \
 | |
|     /usr/local/bin/osrm-partition --help && \
 | |
|     /usr/local/bin/osrm-customize --help
 | |
| 
 | |
| WORKDIR /opt
 | |
| 
 | |
| EXPOSE 5000
 | |
| 
 |