57 lines
1.4 KiB
Docker
57 lines
1.4 KiB
Docker
|
|
FROM ubuntu:24.04
|
||
|
|
|
||
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
|
|
||
|
|
# Install base dependencies
|
||
|
|
RUN apt-get update && apt-get install -y \
|
||
|
|
curl \
|
||
|
|
wget \
|
||
|
|
git \
|
||
|
|
build-essential \
|
||
|
|
cmake \
|
||
|
|
ninja-build \
|
||
|
|
pkg-config \
|
||
|
|
libsnappy-dev \
|
||
|
|
liblz4-dev \
|
||
|
|
libzstd-dev \
|
||
|
|
libbz2-dev \
|
||
|
|
zlib1g-dev \
|
||
|
|
libgflags-dev \
|
||
|
|
xz-utils \
|
||
|
|
&& rm -rf /var/lib/apt/lists/*
|
||
|
|
|
||
|
|
# Install Zig 0.13.0 (latest stable)
|
||
|
|
ARG ZIG_VERSION=0.13.0
|
||
|
|
RUN curl -L "https://ziglang.org/download/${ZIG_VERSION}/zig-linux-x86_64-${ZIG_VERSION}.tar.xz" | tar -xJ -C /opt \
|
||
|
|
&& ln -s /opt/zig-linux-x86_64-${ZIG_VERSION}/zig /usr/local/bin/zig
|
||
|
|
|
||
|
|
# Build RocksDB from source with shared library
|
||
|
|
ARG ROCKSDB_VERSION=9.6.1
|
||
|
|
WORKDIR /tmp
|
||
|
|
RUN git clone --depth 1 --branch v${ROCKSDB_VERSION} https://github.com/facebook/rocksdb.git \
|
||
|
|
&& cd rocksdb \
|
||
|
|
&& mkdir build && cd build \
|
||
|
|
&& cmake .. \
|
||
|
|
-DCMAKE_BUILD_TYPE=Release \
|
||
|
|
-DWITH_SNAPPY=ON \
|
||
|
|
-DWITH_LZ4=ON \
|
||
|
|
-DWITH_ZSTD=ON \
|
||
|
|
-DWITH_BZ2=ON \
|
||
|
|
-DWITH_ZLIB=ON \
|
||
|
|
-DWITH_GFLAGS=OFF \
|
||
|
|
-DROCKSDB_BUILD_SHARED=ON \
|
||
|
|
-DWITH_TESTS=OFF \
|
||
|
|
-DWITH_BENCHMARK_TOOLS=OFF \
|
||
|
|
-DWITH_TOOLS=OFF \
|
||
|
|
-G Ninja \
|
||
|
|
&& ninja -j$(nproc) \
|
||
|
|
&& ninja install \
|
||
|
|
&& ldconfig \
|
||
|
|
&& cd / && rm -rf /tmp/rocksdb
|
||
|
|
|
||
|
|
# Set up working directory
|
||
|
|
WORKDIR /workspace
|
||
|
|
|
||
|
|
# Default command
|
||
|
|
CMD ["/bin/bash"]
|