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