cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

Dockerfile (2529B)


      1 # Wraps the upstream continuwuity scratch-based image with a shell (debian:12-slim)
      2 # so that Velero pre/post backup hooks can freeze the process via SIGSTOP/SIGCONT.
      3 # {"$imagepolicy": "flux-system:forgejo-continuwuity-main"}
      4 FROM forgejo.ellis.link/continuwuation/continuwuity:main@sha256:a31118e10a3e4d48a7b67de690c72ea8f3198ace7fc6f25b77c85eaec1f2ce64 AS upstream
      5 
      6 # Build ldb and sst_dump from the exact RocksDB version continuwuity uses (10.10.1)
      7 # so MANIFEST format is guaranteed compatible for recovery operations.
      8 # NOTE: do NOT pin a per-arch digest here. Flux does not report digests in latestRef
      9 # so any @sha256 pin in this file was manually added. Per-arch digests (from docker
     10 # inspect on amd64) break multi-platform builds — BuildKit uses the pinned arch for
     11 # all platforms, causing QEMU to reject amd64 binaries as wrong architecture.
     12 # {"$imagepolicy": "flux-system:docker-debian-12-slim"}
     13 FROM debian:12-slim AS rocksdb-tools-builder
     14 RUN apt-get update \
     15     && apt-get install -y --no-install-recommends \
     16         build-essential cmake git ca-certificates \
     17         libsnappy-dev liblz4-dev libzstd-dev zlib1g-dev libbz2-dev libgflags-dev \
     18     && rm -rf /var/lib/apt/lists/*
     19 RUN git clone --depth 1 --branch v10.10.1 https://github.com/facebook/rocksdb.git /rocksdb
     20 WORKDIR /rocksdb
     21 RUN cmake -B build \
     22         -DCMAKE_BUILD_TYPE=Release \
     23         -DWITH_TOOLS=ON \
     24         -DWITH_TESTS=OFF \
     25         -DWITH_BENCHMARKS=OFF \
     26         -DWITH_SNAPPY=ON \
     27         -DWITH_LZ4=ON \
     28         -DWITH_ZSTD=ON \
     29         -DWITH_BZ2=ON \
     30         -DWITH_GFLAGS=ON \
     31         -DROCKSDB_BUILD_SHARED=OFF \
     32         -DUSE_RTTI=ON \
     33         -DCMAKE_CXX_FLAGS="-Wno-restrict" \
     34     && cmake --build build --target ldb sst_dump -j$(nproc)
     35 
     36 # {"$imagepolicy": "flux-system:docker-debian-12-slim"}
     37 FROM debian:12-slim
     38 # Runtime deps for ldb/sst_dump
     39 RUN apt-get update \
     40     && apt-get install -y --no-install-recommends \
     41         procps \
     42         libsnappy1v5 liblz4-1 libzstd1 zlib1g libbz2-1.0 libgflags2.2 \
     43     && rm -rf /var/lib/apt/lists/*
     44 
     45 # Copy binary and shared libraries from the upstream scratch image
     46 COPY --from=upstream /sbin/conduwuit /sbin/conduwuit
     47 COPY --from=upstream /usr/lib/ /usr/lib/
     48 COPY --from=upstream /etc/ssl/ /etc/ssl/
     49 
     50 # Copy RocksDB tools built at matching version
     51 COPY --from=rocksdb-tools-builder /rocksdb/build/tools/ldb /usr/local/bin/ldb
     52 COPY --from=rocksdb-tools-builder /rocksdb/build/tools/sst_dump /usr/local/bin/sst_dump
     53 
     54 ENV LD_LIBRARY_PATH=/usr/lib
     55 
     56 ENTRYPOINT ["/sbin/conduwuit"]