mirror of
https://github.com/serai-dex/serai.git
synced 2025-01-08 20:09:54 +00:00
f0ff3a18d2
* Use debug builds in our Dockerfiles to reduce CI times Also enables only spawning the mdns service when debug in the coordinator. * Correct underflow in processor Prior undetected due to relase builds not having bounds checks enabled. * Restore Serai release due to CI/RPC failures caused by compiling it in debug mode This is *probably* worth an issue filed upstream, if it can be tracked down. * Correct failing debug asserts in Monero These debug asserts assumed there was a change address to take the remainder. If there's no change address, the remainder is shunted to the fee, causing the fee to be distinct from the estimate. We presumably need to modify monero-serai such that change: None isn't valid, and users must use Change::Fingerprintable(None).
71 lines
2.1 KiB
Docker
71 lines
2.1 KiB
Docker
FROM debian:bookworm-slim as mimalloc
|
|
|
|
RUN apt update && apt upgrade -y && apt install -y gcc g++ make cmake git
|
|
RUN git clone https://github.com/microsoft/mimalloc && \
|
|
cd mimalloc && \
|
|
mkdir -p out/secure && \
|
|
cd out/secure && \
|
|
cmake -DMI_SECURE=ON ../.. && \
|
|
make && \
|
|
cp ./libmimalloc-secure.so ../../../libmimalloc.so
|
|
FROM rust:1.74-slim-bookworm as builder
|
|
|
|
COPY --from=mimalloc libmimalloc.so /usr/lib
|
|
RUN echo "/usr/lib/libmimalloc.so" >> /etc/ld.so.preload
|
|
|
|
RUN apt update && apt upgrade -y && apt autoremove -y && apt clean
|
|
|
|
# Add dev dependencies
|
|
RUN apt install -y pkg-config clang
|
|
|
|
# Dependencies for the Serai node
|
|
RUN apt install -y make protobuf-compiler
|
|
|
|
# Add the wasm toolchain
|
|
RUN rustup target add wasm32-unknown-unknown
|
|
|
|
# Add files for build
|
|
ADD common /serai/common
|
|
ADD crypto /serai/crypto
|
|
ADD coins /serai/coins
|
|
ADD message-queue /serai/message-queue
|
|
ADD processor /serai/processor
|
|
ADD coordinator /serai/coordinator
|
|
ADD substrate /serai/substrate
|
|
ADD mini /serai/mini
|
|
ADD tests /serai/tests
|
|
ADD Cargo.toml /serai
|
|
ADD Cargo.lock /serai
|
|
ADD AGPL-3.0 /serai
|
|
|
|
WORKDIR /serai
|
|
|
|
# Mount the caches and build
|
|
RUN --mount=type=cache,target=/root/.cargo \
|
|
--mount=type=cache,target=/usr/local/cargo/registry \
|
|
--mount=type=cache,target=/usr/local/cargo/git \
|
|
--mount=type=cache,target=/serai/target \
|
|
mkdir /serai/bin && \
|
|
cargo build --features "binaries monero" -p serai-processor && \
|
|
mv /serai/target/debug/serai-processor /serai/bin
|
|
FROM debian:bookworm-slim as image
|
|
|
|
COPY --from=mimalloc libmimalloc.so /usr/lib
|
|
RUN echo "/usr/lib/libmimalloc.so" >> /etc/ld.so.preload
|
|
|
|
RUN apt update && apt upgrade -y && apt autoremove -y && apt clean
|
|
# Install ca-certificates
|
|
RUN apt install -y ca-certificates
|
|
|
|
# Switch to a non-root user
|
|
RUN useradd --system --create-home --shell /sbin/nologin processor
|
|
USER processor
|
|
|
|
WORKDIR /home/processor
|
|
|
|
# Copy the Processor binary and relevant license
|
|
COPY --from=builder --chown=processsor /serai/bin/serai-processor /bin/
|
|
COPY --from=builder --chown=processsor /serai/AGPL-3.0 .
|
|
|
|
# Run processor
|
|
CMD ["serai-processor"]
|