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"]