| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- # syntax=docker/dockerfile:1.4
- # Smartbotic Database Package Builder — Debian 13 (trixie)
- # Produces 4 .deb packages: server, libclient, libclient-dev, cli
- #
- # Usage:
- # docker buildx build -f packaging/Dockerfile.build \
- # --build-arg BASE_IMAGE=smartbotic-db-build-base:debian13 \
- # --target packages --output "type=local,dest=dist/" .
- ARG BASE_IMAGE=debian:trixie
- FROM ${BASE_IMAGE} AS builder
- ARG BUILD_VERSION=0.0.0
- ARG BUILD_DEB_REVISION=1
- ARG BUILD_JOBS=16
- ARG BUILD_GIT_COMMIT=unknown
- ENV DEBIAN_FRONTEND=noninteractive
- ENV BUILD_VERSION=${BUILD_VERSION}
- ENV BUILD_DEB_REVISION=${BUILD_DEB_REVISION}
- ENV BUILD_JOBS=${BUILD_JOBS}
- ENV CCACHE_DIR=/ccache
- ENV CCACHE_MAXSIZE=2G
- ENV CCACHE_COMPRESS=1
- ENV CCACHE_COMPRESSLEVEL=6
- ENV PATH="/usr/lib/ccache:${PATH}"
- # Install deps if not using pre-built base
- RUN if [ ! -f /etc/smartbotic-db-build-base ]; then \
- apt-get update && apt-get install -y --no-install-recommends \
- build-essential cmake ninja-build git pkg-config ca-certificates ccache \
- libssl-dev liblz4-dev \
- protobuf-compiler libprotobuf-dev libgrpc++-dev protobuf-compiler-grpc \
- nlohmann-json3-dev libspdlog-dev libfmt-dev dpkg-dev \
- && rm -rf /var/lib/apt/lists/*; \
- else echo "Using pre-built base: $(cat /etc/smartbotic-db-build-base)"; fi
- WORKDIR /build
- COPY CMakeLists.txt VERSION ./
- COPY cmake/ ./cmake/
- COPY proto/ ./proto/
- COPY client/ ./client/
- COPY service/ ./service/
- COPY cli/ ./cli/
- COPY tests/ ./tests/
- COPY packaging/ ./packaging/
- # Build with shared libs + Release
- RUN --mount=type=cache,target=/ccache,id=smartbotic-db-ccache \
- cmake -B build -G Ninja \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_C_COMPILER_LAUNCHER=ccache \
- -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
- -DSMARTBOTIC_DB_BUILD_SERVICE=ON \
- -DSMARTBOTIC_DB_BUILD_CLIENT=ON \
- -DSMARTBOTIC_DB_BUILD_CLI=ON \
- -DSMARTBOTIC_DB_BUILD_TESTS=ON \
- -DBUILD_SHARED_LIBS=ON \
- && cmake --build build --parallel ${BUILD_JOBS} \
- && ccache --show-stats || true
- # Run tests
- RUN cd build && LD_LIBRARY_PATH=./client:$LD_LIBRARY_PATH ./tests/test_vector_storage
- # Package
- FROM builder AS packager
- RUN mkdir -p /packages
- ENV OUTPUT_DIR=/packages
- RUN chmod +x /build/packaging/deb/create-debs.sh && \
- /build/packaging/deb/create-debs.sh
- # Output
- FROM scratch AS packages
- COPY --from=packager /packages/*.deb /
|